diff --git a/research/retimed-t488-composition/.gitattributes b/research/retimed-t488-composition/.gitattributes new file mode 100644 index 0000000000..7e8991ffee --- /dev/null +++ b/research/retimed-t488-composition/.gitattributes @@ -0,0 +1,2 @@ +# Preserve byte-exact pinned research sources and evidence. +* -text diff --git a/research/retimed-t488-composition/ARTIFACTS.json b/research/retimed-t488-composition/ARTIFACTS.json new file mode 100644 index 0000000000..6d13c505af --- /dev/null +++ b/research/retimed-t488-composition/ARTIFACTS.json @@ -0,0 +1,233 @@ +{ + ".gitattributes": "7f2891359bdee2a002faf3c5fefefc905b41d96d99ea027e1583919d5bb92237", + "CREDITS.md": "47a0a177db051e26498919d647e91169ba9627082519538a2754e407f22788e3", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "LOCAL-AUDIT-PROVENANCE.json": "136a3463b1e0b6a2ccf63605d3f9da66319aa7bbe377aa836c66ea2dfde9d4f7", + "PROOF.md": "7a010afb7a01cded37b18561e903ca580eea5d838456cab0db061a13ad5fd04b", + "PUBLIC-VALIDATION.json": "c1ca4d7ff87c8aa9ce091d8db43a3165444a0451e00dade26359a68a291d8ef5", + "README.md": "dac5a44abfe961bc86446a6ca6c3b6c76afe588d44c725911e7bd391b1c059b7", + "SOURCES.json": "e5822ba1b619af70e55e88a0b4bf81eddd8497bc98b5aac7b00c9d6b63b64bf9", + "TASK.json": "3fb839898863ec395a4a9fc6274d5e58d3f18bb2c511e64d8e84d7a0595dc7ee", + "VERIFY.json": "adac5734b1713d7896ac8319ccee4507f19817667048f83e4cd7ff867bb6fea1", + "admission_evidence.py": "76863a6345387fd38da953d3ebb59039101601e0e80710bfcc1ac8bbd4658c90", + "evidence/BOUNDED-WITH-RECORDED-ADMISSION.json": "371d6eab7a7904241965ab72d50b4344df60623dceeff7b29231cd79cda1ed4c", + "evidence/FRONTIER-REVIEW.json": "202d47b11e615927e872167478669d3ed474fe286e978683e3b7bcbe049ff9e9", + "evidence/INDEPENDENT-REPLAY-REVIEW.md": "5cb61570fe248b0294303c74bc8f2c1f43b0240e259e85b6c7d4cf4fcdd392fa", + "evidence/RECEIPT-MUTATION-TESTS.json": "2c4720ee59fd3a56707a5572b4c0b8f0d83ed0ab2764f2f0079e3895b8b25cfd", + "evidence/recorded-admission/COMPLETE-ADMISSION.json": "ef9b8cce9ee4ad20c1a790dd69da871ddc87f62adf01465af968c7c1d638e41c", + "evidence/recorded-admission/admission.json": "53e842c99b7304773e00416d37ddd9faad47b0c150b17d92d6e8744f0fa66270", + "evidence/recorded-admission/dispatch.json": "15f187340cd32037492d4ce57820a41873dc015f4c689a8596d59c55f0077892", + "evidence/recorded-admission/fill.json.gz": "4ccbadfabea3a7041783024dc8cd0cc0353d3a18c2286acacef50fe8c3141d8f", + "evidence/recorded-admission/manifest.json": "9b839aa7bf05ad0c2609677dfe35f4a317acaffec8813ff3b922fa2c5b7270fd", + "evidence/recorded-admission/native.json": "3ce3201707762aa08fd0b22200ef662339138022760f289fa94521da9e2aa354", + "evidence/recorded-admission/order.json": "a4c8f6c96716da0a6d2057373bf3ec3ffb1c7f86bf2b263416dc1c00fee23555", + "evidence/recorded-admission/outer_claim.json": "c7455323c62a5b1d5c9ceef07a305a5758df6971ac8f88e2be5223eb5f4c7553", + "evidence/recorded-admission/profile.json": "8b21b03d25cb7bb226b91a63f2458e7b2e92df5779d9e99f0b5275c4c9e90afd", + "evidence/recorded-admission/release.json": "c688e73f02e23fed9576d03a28139af72d904e6789164d7ff9d831cd1f253a0d", + "evidence/recorded-admission/source_manifest.json": "fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0", + "evidence/recorded-admission/spec.json": "eac85095015076f426c05cd452cdd80561a55fe52a876fc69347384c275d6d04", + "evidence/recorded-admission/stages.json": "63e9a43cbb14a5e58c9f49bd7da2c4f952266bff96e32b379a9895235f49c2ae", + "full-replay/DEPENDENCIES.json": "326eb14197fdcb9eae0b48cd289f1e3840f4385aecbc2e01c6fe589fe99adc1e", + "full-replay/NOTICE": "f14c4138884dd509a436b922159469aa35df97eeb41f80897c9b2476dda4cf3f", + "full-replay/PORTABILITY-VALIDATION.json": "d44aed4d3e5d340e790c2af8aacd45a3920d0fc8f190de0e20f47fb4faab67fc", + "full-replay/README.md": "cd330134a62b37e0ea365308b882d81667b013b8ac94884b1222a99d06568f45", + "full-replay/REPLAY.txt": "cf7bc50f9b3c1f8ab4912d4f5a20fe2e6e83be088366cdfd8af018ef61ce239d", + "full-replay/SPEC.json": "906ce4d535568a69c20613f95efa0a3da1917d74d68c45b060b12a34233a218c", + "full-replay/comparator/PR3642-CLAIM.json": "1e7e8b82cd072af0198e6651db37f4ec5d52cda599f2538c678cc6519d2cc06b", + "full-replay/reproduce.py": "490a500e5182f04dff744e9a011d597ecef217d7cfd18ae33f7941714159cc80", + "full-replay/vendor/pr3633/CREDITS.md": "e19ff59959eb0f4d609beab70de9d75ac4e2682830a4d4d44f79584bcb9bbc67", + "full-replay/vendor/pr3633/owners/CANDIDATE.json": "fbdda845beac5bba9baa4b1b8c8f596e98f70b59e1d60ebf4f4d3e8758631bfd", + "full-replay/vendor/pr3633/owners/DEPENDENCIES.json": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272", + "full-replay/vendor/pr3633/owners/DISPATCH37.json": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "full-replay/vendor/pr3633/owners/EXPECTED.json": "924493b6bbeade055af4916ac7bd6d7d7ec0600719f5c39636dc3f16d7ec14ea", + "full-replay/vendor/pr3633/owners/INPUT-PINS.json": "52536cb2643fe04572872820a669c9ee5e6ede435a39c601448e8c14e414fd42", + "full-replay/vendor/pr3633/owners/ORDER37.json": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "full-replay/vendor/pr3633/owners/PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "full-replay/vendor/pr3633/owners/README.txt": "fc248261fa37c2f54da52067090aa2a679668702d5747836f238e1934a71c8be", + "full-replay/vendor/pr3633/owners/SOURCE-PINS.json": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "full-replay/vendor/pr3633/owners/T16-DISPATCH.json": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "full-replay/vendor/pr3633/owners/T16-ORDER.json": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "full-replay/vendor/pr3633/owners/T8-DISPATCH.json": "23877abbe8ec258eb1f2425137f9171d37b1a4414a25595abe75eb0738850a24", + "full-replay/vendor/pr3633/owners/T8-ORDER.json": "a1abf78fb3b88bbf4656e6ae26f148a007f744f0be4c00d480fb2424ce8766d6", + "full-replay/vendor/pr3633/owners/T8-PROVENANCE.json": "65d971ac40b9638fb16a35f9d8889009f038d8a46d46085bcc5aea03ee31fd97", + "full-replay/vendor/pr3633/owners/UPSTREAM-PROOF.md": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd", + "full-replay/vendor/pr3633/owners/UPSTREAM-SOURCE-CREDITS.md": "5790aad1f07efb375e41e35acd7bb5f7b54c5e6cb21e6c47892be12a44a9ed2c", + "full-replay/vendor/pr3633/owners/UPSTREAM-SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "full-replay/vendor/pr3633/owners/integral_network.py": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "full-replay/vendor/pr3633/owners/portable_expand.py": "e2291ef36067019b26099e4f1d44f7a9a15634f01f7ce0f98569c1c8ccce7e4b", + "full-replay/vendor/pr3633/owners/source_context.py": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "full-replay/vendor/pr3633/owners/verify_candidate.py": "0765a1a4ecf42f4a2341c3c3b2e2a371daeebc37c2700364e6ab1fd97b0b12a8", + "full-replay/vendor/pr3642/CREDITS.md": "ac5485cf69c43e252145442ce51bd7b9f982459a7f3db3d798d9dba66d00c7ba", + "full-replay/vendor/pr3642/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "full-replay/vendor/pr3642/MAIN-INPUTS.json": "cdf3c11de5b0e43646043330ced860a8c2ae70cb71fd07c7ccb3589415521cda", + "full-replay/vendor/pr3642/NOTICE": "b49022cb4104d90b182e4c335f670faf45529025b15db77bf0291835083c28bd", + "full-replay/vendor/pr3642/data/RETIME-AUDIT-base.json": "b3a4fefcb1aa16b16ec4a4481da10afa06f8f2a59c2e77ade8eaa6dd48bc8d0e", + "full-replay/vendor/pr3642/data/RETIME-AUDIT-extra.json": "ddf5b88b7338202a40cc92851c1e95d8fdc0ad97ffc8bc6f680ba162e913fecb", + "full-replay/vendor/pr3642/data/RETIMED-RECORD-base.json": "9e224473ea00cc5965f8202d7d9e9f29b1069c7e5dde95ae949bdbaa92949fb4", + "full-replay/vendor/pr3642/data/RETIMED-RECORD-extra.json": "c7b0eb0663dd5d1f7e78105d32e0c2669fc473fb5e730f5fa0fab31e2c0dd13c", + "full-replay/vendor/pr3642/data/RETIMED644-660-base.json.gz": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "full-replay/vendor/pr3642/data/RETIMED644-660-extra.json.gz": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "full-replay/vendor/pr3642/data/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "full-replay/vendor/pr3642/data/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "full-replay/vendor/pr3642/reproduce.py": "9ec43247d2b3af6e4fce61173a4e59aa13b845792776289995cb108285f8aede", + "full-replay/vendor/pr3642/scripts/integrate.py": "2129f62e2b78b1a674f78045c3acf0b1d8c8f59812147829e02d60d7913f9926", + "full-replay/vendor/pr3642/vendor/PR3626-FETCH-PINS.json": "b0c055a4c03038e87ff65b9e6c0ebc7713b841a8692718f1ff725d91cb108d79", + "full-replay/vendor/pr3642/vendor/PR3626-INPUTS.json": "afb9c990b5020a31da8e43794c876d3c2288b75decb54d52a9382da18317eb39", + "full-replay/vendor/pr3642/vendor/staged-width-t530/CLAIM.json": "9f27717c3ddbf5eb7b9773e1b2887ff3899d354019139d916c9b8004aee2e097", + "full-replay/vendor/pr3642/vendor/staged-width-t530/CREDITS.md": "dfca50b8d12ccb9ebf7c574bc9a30c57c4329da259bf171e4530437a747da501", + "full-replay/vendor/pr3642/vendor/staged-width-t530/EXPECTED.json": "9a3ddab54912652881f1488c3572988a81cc127e8fa1d01bc615842314f737e3", + "full-replay/vendor/pr3642/vendor/staged-width-t530/FRONTIER.json": "8f2f80438593e7efaa6bb57c881a40cedbd7b5665b4ae12c6cf215d217c98397", + "full-replay/vendor/pr3642/vendor/staged-width-t530/PROOF.md": "485f4b2adce3761ac664032898c3a90ce83186c423df6f1eef499fe76b5ce768", + "full-replay/vendor/pr3642/vendor/staged-width-t530/README.md": "c5f6d11e3783d09a60c0cf28996e94fc84e543717873aadcbaa3076720a778cb", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/CANDIDATE.json": "7755b8e7aed8dbfbe89fe64fdfebee04ad84de3c6c9020b3535eb04fdabccec1", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/DEPENDENCIES.json": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/DISPATCH37.json": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/EXPECTED.json": "4fac5fcc90e20405c0ad176d7466cbd52eb947c02fd34fe35fea18eaf372d79a", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/INPUT-PINS.json": "9b4b64a1e7d596f6ca8c4be8c2592544bce15a91dee988a31e89f0acb66cff7e", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/ORDER37.json": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/README.txt": "7b9e8d85c1d0edfc265dc321a32752d76f1c94fa76dd7a931fff9066f57bd3a6", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/SOURCE-PINS.json": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/T16-DISPATCH.json": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/T16-ORDER.json": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/T16-PROVENANCE.json": "ebc9d5d23d5a698b795deee783c991910d2027cdb2e2f7561854df4189a63621", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/UPSTREAM-PROOF.md": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/independent_literal.py": "36d7f4e3a611fd6b5983222887beb9a37a18bfac0d999ac5c00e3e191d1c5cc4", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/integral_network.py": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/portable_expand.py": "3a0ded73b3b8c6e945f28626c65c2160b540df5c3e86db5a48eb5639c5731f4c", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/source_context.py": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/test_owner_guards.py": "fecbf1518c4594c64276847f92d5980443c6b5562345e97354305d5c31530bb0", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/verify_candidate.py": "efce5f7b1cbc3f8d0807312da5248209d1b2dd9d6043656a7d2e58b58887214b", + "full-replay/vendor/pr3642/vendor/staged-width-t530/owners/verify_owner.py": "8d1a3c2a7beb0f18e2beaa3df455a721ea6129343ec52031d18e58fbde5081cb", + "full-replay/vendor/pr3642/vendor/staged-width-t530/replay.py": "c74d9169279bd795c84a605e375afbba1988abfc78933293b296f59bd70f013f", + "full-replay/vendor/pr3642/vendor/staged-width-t530/source_builder.py": "0cb5f62d517ac35c44922abc338cd41356b3e08dc7c6d6d9f64a43a9a541378f", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/PROOF.md": "525b010f3a895bdb11313f9938ad1b742df64bcee0b5671399230b1ded541baf", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/README.md": "c1956badbcd92f2f88dcea833facc39eefb7eef8f220fb7b1941b4c552109d89", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/SOURCES.json": "005bf38ae679a9fb3ad1ee94b8c35bdfec58451ef58e0a87b0c7b68ef4fc51d5", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-base.json.gz": "a6ae4188be998990ecb176fef5929e8e1dfce3726e372c0da2a290fe8ea73532", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-extra.json.gz": "33a39d46d4d19bdeb6f0b6abb38cc80c68219e1ae10dd7e1acaccedc14b47236", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/TASK.json": "b85158fedf4734ff028703353ac6e9929ddea6a8e7c845c8341c2428d628717a", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/VALIDATION.json": "fa3803654e230cd50bc9fb874ec80e16dd838adebf13cd0cb174f18bc12fa04a", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/VERIFY.json": "21320da6b638366ccd42824e4b5865608f497cf2ba7323fffedb77f0a368c96a", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/check_residual.py": "e34b06ae725f062d15ad83cbd3ef2f91d3d78c380ccc93c8d2deba1c9e354c70", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/check_scope.py": "f8eefd425a0d570167e14febcacfbb38a6bb29d820d808be426180cf31b5a947", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/staged_pair.py": "25fc9b025dbb90358032013303adea650a5f19937fd3edf30b6c6fd023e2d747", + "full-replay/vendor/pr3642/vendor/staged-width-t530/supplier3605/verify.py": "0ef49b725fc132cd5fc26a9a81028739896232d938bae22cef132384c7cbab13", + "full-replay/vendor/pr3642/vendor/staged-width-t530/templates/prepare_extension_native.py": "0cdb4b8b8b565e3dc4a312d4174c86d7d1aebc531430cb726658c8feb0c3bcf4", + "local-audit/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "local-audit/MANIFEST.json": "8b39c1608513db2811ea25fecdfc24e7b593c5a4a37ab0e52b70d2af3c009917", + "local-audit/NATIVE-LINEAGE-NOTICE": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420", + "local-audit/PUBLIC-INPUTS.json": "e0fae1c1a7aa365acd4b1815f74bd6d588d7829a385f62136cf99ba3dbb9c412", + "local-audit/PUBLICATION-PROVENANCE.json": "26c9b4759480d774c0c09020c68487ca40d846382cfe64e01b75d7854db4ba05", + "local-audit/README.md": "5882a6746c61aecbd6ad65dc216082506b86465f3a0c3a036ba48aba2f05d1f5", + "local-audit/SOURCE-PINS.json": "782e6600e68efdb8b753e965f9e0ed87b7ac213b674ce09db14d7f6437edc3ca", + "local-audit/check_retiming_independent.py": "1d57113431ec7615fc7e3e876b11ea97ee29af21402f9081d44feeb1dff5d541", + "local-audit/check_retiming_negative.py": "f1d8737aba2fa0ca2fe21eb5454c8e065aa77023826df54d7397bcb83c4e758d", + "local-audit/receipts/native-base/COMMANDS.json": "f50dabd902fc59059482c7c5ebd7931e8ec1e35137b070ac85f5a3df813fcdef", + "local-audit/receipts/native-base/RESULT.json": "24a078ef87248b8c590cc9a64d00956d8275098f7109ea70e4952028e15ff5e7", + "local-audit/receipts/native-base/native/local/INDEPENDENT-LOCAL-REPLAY.json": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458", + "local-audit/receipts/native-base/native/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "local-audit/receipts/native-base/native/local/SCALAR-FRAME-AUDIT.json": "21ce6befe785a2143146121457fe394c0d7a1140118b600e6508d2b7ae0ec192", + "local-audit/receipts/native-base/native/local/WARP-RECIPE-CHECKS.json": "8a0b738edc8ef4c428346e55d74bca08313df104a61b21dbbfcf9dd82c863079", + "local-audit/receipts/native-base/native/local/WRAPPER-CHECKS.json": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485", + "local-audit/receipts/native-extra/COMMANDS.json": "087c701235d3fd702b4d928f43240ca7e792473609cb2cf4e0a8c46223624b47", + "local-audit/receipts/native-extra/RESULT.json": "d5f100c155e13d8360e016c32efd66df0bfadd0fa52bcb3a1f2b1f9cf9e22b9c", + "local-audit/receipts/native-extra/native/local/INDEPENDENT-LOCAL-REPLAY.json": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037", + "local-audit/receipts/native-extra/native/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "local-audit/receipts/native-extra/native/local/SCALAR-FRAME-AUDIT.json": "60fb2027dffde335e62c1fb6fe8d51a9432b70478224fcbbfa0bfe3b7ade4b69", + "local-audit/receipts/native-extra/native/local/WARP-RECIPE-CHECKS.json": "cb7e8b1d35dc677737ee514f39b96d7d25e0d5d2b0c1d6a6bcafb4c23c91902d", + "local-audit/receipts/native-extra/native/local/WRAPPER-CHECKS.json": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485", + "local-audit/vendor/SOURCE-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "local-audit/vendor/SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "local-audit/vendor/audit_local.py": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90", + "local-audit/verify.py": "8ed59af3f942cbe2e469434954f74b0d6fedd7b99f09efc2b60e64c2e5a030a7", + "local-audit/words/RETIMED644-660-base.json.gz": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "local-audit/words/RETIMED644-660-extra.json.gz": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "local-audit/words/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "local-audit/words/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "numerics/PROVENANCE.json": "bd3b05fefaa0821f84ba6f3e41ae022f69ac9022e5e5d394562956d0aad3bfce", + "numerics/README.md": "4b36835e2c5afcfffcde9f32ca3711791bf5c6f860e99f6fca9f3f6f0f9c5c12", + "numerics/RECORDED.json": "e8205493e8576d194b8d3433a67e69aa320fbc05e99ef3ae2c0cf8efa9b6533b", + "numerics/TESTS.json": "b35c337ffc7f7ccd79aeef311d83e3571e0654b1a98afb46312224958b332e4a", + "numerics/check.py": "50a51ed54d67ba4648b800021d27618bd1f0a05baa50bd40f77d844eb5fa4531", + "numerics/inputs/NEW-base.json.gz": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "numerics/inputs/NEW-extra.json.gz": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "numerics/inputs/OLD-ARITHMETIC.json": "2f0113dab9dedd5941b1fdee737e6b928539cc78034877c0082a812832f45d3e", + "numerics/inputs/OLD-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "numerics/inputs/OLD-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "numerics/inputs/OWNER-EXPECTED.json": "924493b6bbeade055af4916ac7bd6d7d7ec0600719f5c39636dc3f16d7ec14ea", + "numerics/inputs/OWNER-PORTABLE-REPLAY.json": "bfe8ebc9d646751467745d90110b5600b7df5bf039afdeafb7ea19b0d5046dee", + "numerics/inputs/OWNER-PROFILE.json": "1e37bb17fa4ca6fd84d62c6f540e09be96724ea3af4ea50e3e27c6ecb796b35c", + "numerics/inputs/PR3642-CLAIM.json": "1e7e8b82cd072af0198e6651db37f4ec5d52cda599f2538c678cc6519d2cc06b", + "numerics/inputs/PR3642-MOMENT.json": "106f7586f70c9e9b88312426b26f1d07f146a59ef897dbe983d5e59e142cf4ea", + "numerics/inputs/PR3642-OUTER-CLAIM.json": "512d8c62a12e669040cf849c4b9774af297c585208a0ce0d86e517dc29fc46cd", + "numerics/outer.py": "838bec72212f8cbe46e04011d2d38f873ff0f7aa1e32630432b7b884015441dc", + "numerics/run.py": "413678a02d99586ea375e1e394c67fb15a3fb3e0eabe4e6e0dcefb84d5ff1d71", + "numerics/test_check.py": "c380b50ee079940b0fe64be87ea87c4fcce8155002c67808b15c324f1075a496", + "numerics/vendor/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "numerics/vendor/arith.py": "1b4766610223bbf5e346d7cebc036eaeaedfa2f7200c075136bd750ab26ece88", + "numerics/vendor/check_ledger.py": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "numerics/vendor/independent_check.py": "a5a0361539ec7cae9eb6c0371f857919335a1720040f22af291aa3e34fc864c7", + "numerics/vendor/price.py": "ee38ccbc94411b2c9c7ab88b1f6d1b34debdafa896bd5f4b7214f20168f90dab", + "owners/.gitignore": "2257ebdb2af14e89f1d7305d046b70f665deb4fc94725fb37a14fc0d1887c821", + "owners/AUDITOR-DIFF.patch": "284aee2cd9147d9069e556e7c8eda476d723d51214a12bb81aa388bad2b559cf", + "owners/DERIVATION.json": "4ff035f106e3d506304937b9143bbde9eb857727ba3b1a0977cecb27cdda1bd5", + "owners/NATIVE-BINDING.json": "759a25f63e01a9e0423631233d229af8253bda8d346b7bfddc52c1e4e6c0a808", + "owners/README.md": "0bd22e95157fd434947a11db24c7422e9e4abf26bcaa95cc97c9658ab7d4708c", + "owners/SOURCE-CLOSURE.json": "9efc85bddb298a6ff3d5357dfac60b128e2dc9f4f1eb18fe104ec51ff5af97a9", + "owners/evidence/FRESH-RESULT.json": "b3a1d95e89206e875c06ee2bca535d772dd55bab114f45cb6041606c00ff5c87", + "owners/evidence/FRESH-RUN.json": "fbab12bf1bc2e5afdb907cdb82b6645670daf803182bc4af2fd48df330e6508d", + "owners/evidence/RECEIPT-PROVENANCE.json": "b53fed082a19579fe9831cc8b9e83c541eb3e2e81b2c8c08ef59fa432e474247", + "owners/evidence/independent-audit.log": "4d879461e34d282d23ef75160d0cad86939f3c1efeaa590e8279ac64f870fd68", + "owners/evidence/materialize.log": "a4343580a140f5897123c5065af1f1e880f9756b2f0cb8ae474e0c00a39bdc1d", + "owners/evidence/owner-guards.log": "fad3d40202cbee2f6bb6bba78917b0f5f308ee10ceb80202174938d2eba8c87d", + "owners/execution.log": "3b750eb5c4e54698f2bc994549f484ab69bc31ece39eed40fad06eca85dfe4b8", + "owners/independent_literal.py": "caa5eb4fff4908c0891c3ee41e7e6d71bf19bb710d1d7781164f10ce84bce769", + "owners/native/checked-base/CANONICAL-WORD.json.gz": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a", + "owners/native/checked-extra/CANONICAL-WORD.json.gz": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01", + "owners/run.py": "2c0cdd2807c7f83b2c804b2450cade07c9b1e74f2656db2ccb039ebf638b7bba", + "owners/source/research/coupled-carrier-cap740/cap_check.py": "c2a2ea7df9ef2f7c7ae2739435f4ac44f2c912d8e18fc9278c717958f258ee38", + "owners/source/research/coupled-carrier-cap740/common.py": "8786495cbf808d950be1c42e42d0198e950e44167af80063d25fd186aafea534", + "owners/source/research/coupled-carrier-cap740/vendor/PR3133-CAP.json": "e32f3ecd5e6594935583f80f643cf1930e8bc017e3c541025c335395a15cf19c", + "owners/source/research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "owners/source/research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz": "68b8bae90144248774b1920cd27f9519caa3dc427704d8a9da6d4c491d912fc4", + "owners/source/research/coupled-carrier-cap740/vendor/PR3133-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "owners/source/research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd", + "owners/source/research/coupled-carrier-cap740/vendor/lift.py": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c", + "owners/source/research/rank7-joint-endframes/allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "owners/source/research/rank7-joint-endframes/allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "owners/source/research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "owners/source/research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "owners/source/research/rank7-joint-endframes/allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461", + "owners/upstream/CANDIDATE.json": "fbdda845beac5bba9baa4b1b8c8f596e98f70b59e1d60ebf4f4d3e8758631bfd", + "owners/upstream/DEPENDENCIES.json": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272", + "owners/upstream/DISPATCH37.json": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "owners/upstream/EXPECTED.json": "924493b6bbeade055af4916ac7bd6d7d7ec0600719f5c39636dc3f16d7ec14ea", + "owners/upstream/INPUT-PINS.json": "52536cb2643fe04572872820a669c9ee5e6ede435a39c601448e8c14e414fd42", + "owners/upstream/ORDER37.json": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "owners/upstream/PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "owners/upstream/README.txt": "fc248261fa37c2f54da52067090aa2a679668702d5747836f238e1934a71c8be", + "owners/upstream/SOURCE-PINS.json": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "owners/upstream/T16-DISPATCH.json": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "owners/upstream/T16-ORDER.json": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "owners/upstream/T16-PROVENANCE.json": "ebc9d5d23d5a698b795deee783c991910d2027cdb2e2f7561854df4189a63621", + "owners/upstream/T8-DISPATCH.json": "23877abbe8ec258eb1f2425137f9171d37b1a4414a25595abe75eb0738850a24", + "owners/upstream/T8-ORDER.json": "a1abf78fb3b88bbf4656e6ae26f148a007f744f0be4c00d480fb2424ce8766d6", + "owners/upstream/T8-PROVENANCE.json": "65d971ac40b9638fb16a35f9d8889009f038d8a46d46085bcc5aea03ee31fd97", + "owners/upstream/UPSTREAM-PROOF.md": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd", + "owners/upstream/UPSTREAM-SOURCE-CREDITS.md": "5790aad1f07efb375e41e35acd7bb5f7b54c5e6cb21e6c47892be12a44a9ed2c", + "owners/upstream/UPSTREAM-SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "owners/upstream/independent_literal.py": "8517c0d6c7cbe73438885135ac7fd9781dd5120113c9721002346dca603f5ed9", + "owners/upstream/integral_network.py": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "owners/upstream/portable_expand.py": "e2291ef36067019b26099e4f1d44f7a9a15634f01f7ce0f98569c1c8ccce7e4b", + "owners/upstream/source_context.py": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "owners/upstream/test_owner_guards.py": "888ce0e0f27b803c0ce3066d7db73a71f2956bb4c5ef61a826b7df05f35d28ef", + "owners/upstream/verify_candidate.py": "0765a1a4ecf42f4a2341c3c3b2e2a371daeebc37c2700364e6ab1fd97b0b12a8", + "owners/upstream/verify_owner.py": "19b4119519f57095362e405191a78375b48c55d90248a4d64aa96d917e2b3138", + "test_admission_evidence.py": "7d8dd1762121895c3410a65f95f715fb5836b3a2ab90590779c409e4d40145e3", + "verify.py": "554c793f6516b99cee0e9f8199a5cb569a60931b7e99a46c37d2cbcf4225b4fc" +} diff --git a/research/retimed-t488-composition/CREDITS.md b/research/retimed-t488-composition/CREDITS.md new file mode 100644 index 0000000000..9681c5fbf4 --- /dev/null +++ b/research/retimed-t488-composition/CREDITS.md @@ -0,0 +1,11 @@ +# Credits and exact sources + +This user-directed composition and reproduction work was prepared with substantial OpenAI Codex assistance, including separate source/interface, owner and arithmetic review agents. These are computational checks, not independent human peer review. + +- GitHub contributor `roger-sato`'s PR3642 at `abc12f62e4fe9bfcb2e33c84703253c918668351` supplies the two commuting release retimings, local proof, modern outer comparison and public source materializer. Its original notices are retained in the used capsules. +- PR3633 at `72c268f113368ea0387d188225e3f81ba6d6ef73` supplies the literal T488 three-chronology allocation, reconstruction, owner audit and exact pricing source. Its component attribution is retained. +- Ross Richardson's PR3605 at `3efbb5de06a49ffeea6684482f2d3fe48cdca3fb` supplies the original staged providers, with dcharb78's PR3133 and Jeremy Diviney's PR3148 lineage. +- hexapode's PR3626 at `659fd5e7064d9466b668d7188cbb013b333a415a` supplies the source-bound admission machinery inherited through PR3642. +- Canonical main `20ecf2891d80b5acf18d980b2164fb44ea7faa90` supplies native, owner and release dependencies. The retained local free-operator auditor credits icekylinx with OpenAI GPT-6 Astra assistance. + +Apache-2.0 licensing and inherited notices are preserved. Used upstream files are authenticated; publication adapters are identified separately. No credit for predecessor discoveries is reassigned to this composition. diff --git a/research/retimed-t488-composition/LICENSE b/research/retimed-t488-composition/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/retimed-t488-composition/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/retimed-t488-composition/LOCAL-AUDIT-PROVENANCE.json b/research/retimed-t488-composition/LOCAL-AUDIT-PROVENANCE.json new file mode 100644 index 0000000000..bf0d48107d --- /dev/null +++ b/research/retimed-t488-composition/LOCAL-AUDIT-PROVENANCE.json @@ -0,0 +1,192 @@ +{ + "head": "abc12f62e4fe9bfcb2e33c84703253c918668351", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/3642", + "files": [ + { + "path": "local-audit/check_retiming_independent.py", + "origin_path": "research/staged-release-retiming-t530/local-audit/check_retiming_independent.py", + "git_blob": "9016f3aa149a5de4b61428e6672c073490722efc", + "sha256": "1d57113431ec7615fc7e3e876b11ea97ee29af21402f9081d44feeb1dff5d541" + }, + { + "path": "local-audit/check_retiming_negative.py", + "origin_path": "research/staged-release-retiming-t530/local-audit/check_retiming_negative.py", + "git_blob": "ae7abfe0fc4ab9e68c8b3c7c994da6851eadec57", + "sha256": "f1d8737aba2fa0ca2fe21eb5454c8e065aa77023826df54d7397bcb83c4e758d" + }, + { + "path": "local-audit/LICENSE", + "origin_path": "research/staged-release-retiming-t530/local-audit/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "local-audit/MANIFEST.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/MANIFEST.json", + "git_blob": "81e579131caa3c2a3e7002da31decb65b30b6cc1", + "sha256": "8b39c1608513db2811ea25fecdfc24e7b593c5a4a37ab0e52b70d2af3c009917" + }, + { + "path": "local-audit/NATIVE-LINEAGE-NOTICE", + "origin_path": "research/staged-release-retiming-t530/local-audit/NATIVE-LINEAGE-NOTICE", + "git_blob": "380e979f0e84e00a22bd890615d87cc4684ad740", + "sha256": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420" + }, + { + "path": "local-audit/PUBLIC-INPUTS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/PUBLIC-INPUTS.json", + "git_blob": "6b5c686577391b7e4cf75e9661837400c00c5578", + "sha256": "e0fae1c1a7aa365acd4b1815f74bd6d588d7829a385f62136cf99ba3dbb9c412" + }, + { + "path": "local-audit/PUBLICATION-PROVENANCE.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/PUBLICATION-PROVENANCE.json", + "git_blob": "a2105b48d34c6ab9a11970ea95bb3267a6356f28", + "sha256": "26c9b4759480d774c0c09020c68487ca40d846382cfe64e01b75d7854db4ba05" + }, + { + "path": "local-audit/README.md", + "origin_path": "research/staged-release-retiming-t530/local-audit/README.md", + "git_blob": "797e3186bca1beec94848110b53515623815fe70", + "sha256": "5882a6746c61aecbd6ad65dc216082506b86465f3a0c3a036ba48aba2f05d1f5" + }, + { + "path": "local-audit/SOURCE-PINS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/SOURCE-PINS.json", + "git_blob": "6a5b0d0219dd17cc403aa8fb4e2ce12a320fce69", + "sha256": "782e6600e68efdb8b753e965f9e0ed87b7ac213b674ce09db14d7f6437edc3ca" + }, + { + "path": "local-audit/verify.py", + "origin_path": "research/staged-release-retiming-t530/local-audit/verify.py", + "git_blob": "09c74273a3b92764c802166d15460401c5e690aa", + "sha256": "8ed59af3f942cbe2e469434954f74b0d6fedd7b99f09efc2b60e64c2e5a030a7" + }, + { + "path": "local-audit/receipts/native-base/COMMANDS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-base/COMMANDS.json", + "git_blob": "5675e622fb0f1b4a15a5ea471cb9d4d4cf116f08", + "sha256": "f50dabd902fc59059482c7c5ebd7931e8ec1e35137b070ac85f5a3df813fcdef" + }, + { + "path": "local-audit/receipts/native-base/RESULT.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-base/RESULT.json", + "git_blob": "e32821d6d2f4c8f677ab2f092fcd6eeb64256087", + "sha256": "24a078ef87248b8c590cc9a64d00956d8275098f7109ea70e4952028e15ff5e7" + }, + { + "path": "local-audit/receipts/native-base/native/local/INDEPENDENT-LOCAL-REPLAY.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/INDEPENDENT-LOCAL-REPLAY.json", + "git_blob": "d807481354c4059320984d6d79e3de703132edae", + "sha256": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458" + }, + { + "path": "local-audit/receipts/native-base/native/local/LOCAL-CHECKS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/LOCAL-CHECKS.json", + "git_blob": "fffbfc2f9096d3d1fad0842f6b0898585a4e47b9", + "sha256": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06" + }, + { + "path": "local-audit/receipts/native-base/native/local/SCALAR-FRAME-AUDIT.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/SCALAR-FRAME-AUDIT.json", + "git_blob": "ff42e4487d5177673297022810de994246d1015c", + "sha256": "21ce6befe785a2143146121457fe394c0d7a1140118b600e6508d2b7ae0ec192" + }, + { + "path": "local-audit/receipts/native-base/native/local/WARP-RECIPE-CHECKS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/WARP-RECIPE-CHECKS.json", + "git_blob": "279ebf73e1dff6430d6cf01fecdb168406b5749a", + "sha256": "8a0b738edc8ef4c428346e55d74bca08313df104a61b21dbbfcf9dd82c863079" + }, + { + "path": "local-audit/receipts/native-base/native/local/WRAPPER-CHECKS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/WRAPPER-CHECKS.json", + "git_blob": "15fe2d89b123e91447c43183bb36da9bd60acc29", + "sha256": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485" + }, + { + "path": "local-audit/receipts/native-extra/COMMANDS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-extra/COMMANDS.json", + "git_blob": "39d28305a1d122cfbb26547bdef8d2beef87b9b0", + "sha256": "087c701235d3fd702b4d928f43240ca7e792473609cb2cf4e0a8c46223624b47" + }, + { + "path": "local-audit/receipts/native-extra/RESULT.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-extra/RESULT.json", + "git_blob": "856d9cfd188bbb9d0d366f64a19853bfa0e018ac", + "sha256": "d5f100c155e13d8360e016c32efd66df0bfadd0fa52bcb3a1f2b1f9cf9e22b9c" + }, + { + "path": "local-audit/receipts/native-extra/native/local/INDEPENDENT-LOCAL-REPLAY.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/INDEPENDENT-LOCAL-REPLAY.json", + "git_blob": "f5ca2f7ff2b97f2d546a72d773706533dd203d7f", + "sha256": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037" + }, + { + "path": "local-audit/receipts/native-extra/native/local/LOCAL-CHECKS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/LOCAL-CHECKS.json", + "git_blob": "fffbfc2f9096d3d1fad0842f6b0898585a4e47b9", + "sha256": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06" + }, + { + "path": "local-audit/receipts/native-extra/native/local/SCALAR-FRAME-AUDIT.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/SCALAR-FRAME-AUDIT.json", + "git_blob": "6bb0b6a8bde0e837f7e98dddb8b62bc0c73e8357", + "sha256": "60fb2027dffde335e62c1fb6fe8d51a9432b70478224fcbbfa0bfe3b7ade4b69" + }, + { + "path": "local-audit/receipts/native-extra/native/local/WARP-RECIPE-CHECKS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/WARP-RECIPE-CHECKS.json", + "git_blob": "8f3ae288bc1faae28923116564a1c953e427862d", + "sha256": "cb7e8b1d35dc677737ee514f39b96d7d25e0d5d2b0c1d6a6bcafb4c23c91902d" + }, + { + "path": "local-audit/receipts/native-extra/native/local/WRAPPER-CHECKS.json", + "origin_path": "research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/WRAPPER-CHECKS.json", + "git_blob": "15fe2d89b123e91447c43183bb36da9bd60acc29", + "sha256": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485" + }, + { + "path": "local-audit/vendor/audit_local.py", + "origin_path": "research/staged-release-retiming-t530/local-audit/vendor/audit_local.py", + "git_blob": "8224873d0497cf0b4c202f31b145fa273553d978", + "sha256": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90" + }, + { + "path": "local-audit/vendor/SOURCE-CREDITS.md", + "origin_path": "research/staged-release-retiming-t530/local-audit/vendor/SOURCE-CREDITS.md", + "git_blob": "24f00912d4ec829c3c8d2a8d086aa135664a124c", + "sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6" + }, + { + "path": "local-audit/vendor/SOURCE-NOTICE", + "origin_path": "research/staged-release-retiming-t530/local-audit/vendor/SOURCE-NOTICE", + "git_blob": "89c20926ea7f803718f751d95989d5a269908efd", + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + { + "path": "local-audit/words/RETIMED644-660-base.json.gz", + "origin_path": "research/staged-release-retiming-t530/local-audit/words/RETIMED644-660-base.json.gz", + "git_blob": "d69125e0c7d34af9299e411ada5c30dfc7b95ad1", + "sha256": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269" + }, + { + "path": "local-audit/words/RETIMED644-660-extra.json.gz", + "origin_path": "research/staged-release-retiming-t530/local-audit/words/RETIMED644-660-extra.json.gz", + "git_blob": "f3c580b06506e8888fe766c9a1e0bb1a748d7b74", + "sha256": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55" + }, + { + "path": "local-audit/words/STAGED644-660-base.json.gz", + "origin_path": "research/staged-release-retiming-t530/local-audit/words/STAGED644-660-base.json.gz", + "git_blob": "dc6d321b1e8e2a837a1ff7bb60e8f8f78d043db5", + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + { + "path": "local-audit/words/STAGED644-660-extra.json.gz", + "origin_path": "research/staged-release-retiming-t530/local-audit/words/STAGED644-660-extra.json.gz", + "git_blob": "78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e", + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + } + ] +} diff --git a/research/retimed-t488-composition/PROOF.md b/research/retimed-t488-composition/PROOF.md new file mode 100644 index 0000000000..7c4a28730d --- /dev/null +++ b/research/retimed-t488-composition/PROOF.md @@ -0,0 +1,21 @@ +# Composition argument and obligations + +## Local replacement + +PR3642 changes only four B positions, canonical inverse cleanup, and the paid local profile in each PR3605 provider. The two shared-source/different-target elementary shear pairs commute exactly. Raising each delayed donor operation to its next legal frame replaces a dimension-1-to-2-to-4 path with dimension-1-to-4. The local paid delta is `-2 H1 - 2 H2 + 2 H3`; its rank mass is zero. All entrance/final frames, helper identities, interfaces, 408 helper roles, 91 zero buffers, and width multiplicities `{4:26,5:2,6:18,7:52,8:97,9:213}` are unchanged. The retained independently written local proof and complete 632-column operator replay are executed by the bounded verifier. + +## Allocation compatibility + +The T488 construction uses eight copies of the combined T37/T8/T16 chronology, with 9 calls per replica. Its owner journal supplies `488*9*408 = 1,791,936` roles. Since both providers retain each helper identity and its entrance/final frames, the original width-demand and availability constraints remain the same. This logical interface equality is checked, but does not replace literal replay: the independent owner audit reconstructs source windows, checks each role, same-call family uniqueness, capacity, chronological pending-prefix offsets and every residual child. + +Only the local-call contribution changes. Thus the full paid delta is `4392*(-2 H1 - 2 H2 + 2 H3)`. All idle-completion charges remain and rank mass stays `65088*488`. The physical count includes live `896*488`, 408 helper families, 8 centers, 91 private zero fields and 2 additional fields: `437757` total. No omitted helper, free source copy or uncharged private buffer is introduced. + +## Arithmetic and modern outer transfer + +The full moment is `sum_r profile[r] * r^(1-a) - (896*488)*73^(1-a)`. Two separately implemented rational enclosures check opposite strict signs at the bracket endpoints. The modern outer transfer retains both safety margins, `10^-46` and `10^-70`. Its input profile, live count, geometry, exact moment bracket and resulting modern endpoint must be bound together. The older supplier-only CLAIM is a distinct layer and cannot serve as the headline comparator. + +## Full conditional admission + +The scientific release reconstructs source, authenticates fresh native programs and retained ancestor evidence, reconstructs owners and parent template, rebinds the actual programs, discovers the resulting complete invoice, and applies the unchanged strict admission/controller/physical/precision/outer gates. The independent source review confirmed byte-identical admission drivers and source manifest. The original scientific run reached `PASS_RELEASE` after all seven stages. Its raw receipts and exact source/native/fill bindings are retained under `evidence/recorded-admission`. Independent integration review found no mathematical or owner-predicate defect. The separately packaged complete public wrapper is still being replayed end-to-end. + +The general theorem conditions in README remain assumptions even after every finite gate passes. diff --git a/research/retimed-t488-composition/PUBLIC-VALIDATION.json b/research/retimed-t488-composition/PUBLIC-VALIDATION.json new file mode 100644 index 0000000000..0225141ea2 --- /dev/null +++ b/research/retimed-t488-composition/PUBLIC-VALIDATION.json @@ -0,0 +1,37 @@ +{ + "status": "PASS_FRESH_BOUNDED_RETIMED_T488", + "stages": [ + { + "name": "local", + "exit_code": 0, + "seconds": 3.770446167094633 + }, + { + "name": "owners", + "exit_code": 0, + "seconds": 28.5830622499343 + }, + { + "name": "numerics", + "exit_code": 0, + "seconds": 0.702949499944225 + }, + { + "name": "full-replay-inputs", + "exit_code": 0, + "seconds": 0.09265083400532603 + } + ], + "profile": { + "1": 10817496, + "2": 3179808, + "3": 1024434, + "4": 447984, + "48": 186782, + "5": 94794, + "8": 35136 + }, + "candidate_kappa": "17304188997660711638039999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "recorded_full_admission_present": false, + "scope": "Fresh local, literal-owner and arithmetic checks. Stored full admission, when present, is cross-bound evidence, not a new native/controller replay. All inherited theorem assumptions remain." +} diff --git a/research/retimed-t488-composition/README.md b/research/retimed-t488-composition/README.md new file mode 100644 index 0000000000..f0f003474a --- /dev/null +++ b/research/retimed-t488-composition/README.md @@ -0,0 +1,42 @@ +# Retimed suppliers composed with the T488 allocation + +**The complete scientific run passed all seven admission stages and terminal `PASS_RELEASE`. The end-to-end replay of the published wrapper is running separately; this draft retains all inherited theorem assumptions.** + +This package composes the two commuting release retimings from [PR3642](https://github.com/CrocSwap/integer-mult-bounds/pull/3642) with the literal T488 three-chronology allocation from [PR3633](https://github.com/CrocSwap/integer-mult-bounds/pull/3633). It closes the predicted packing gap by binding the actual retimed words to all 1,791,936 helper roles, then replaying native, controller, physical-cost, precision and modern outer gates. Neither predecessor improvement is credited as newly discovered here. + +The root lies in `(0.001730418899766071163804, 0.001730418899766071163805)`. Its conditional released value is the lower endpoint minus `10^-46 + 10^-70`. The difference from the exact PR3642 modern endpoint is `0.000000024507952107748684`. The complete release, beyond arithmetic alone, supports this conditional bound. + +The complete paid histogram is `{1:10817496, 2:3179808, 3:1024434, 4:447984, 5:94794, 8:35136, 48:186782}`. It covers 4,392 calls, 437,248 live families and 437,757 physical families, including 91 private zero buffers. The original T488 allocation and physical helper identities are retained; every changed native word and the complete new bill are checked separately. + +## Reproduction and validation scope + +The bounded verifier freshly reconstructs and audits the literal allocation, replays the local operator identity and controls, and checks the root and modern outer arithmetic independently. It is distinct from the full scientific admission described in [full-replay/README.md](full-replay/README.md). The combined bounded replay passed all four components in about 33 seconds; see [PUBLIC-VALIDATION.json](PUBLIC-VALIDATION.json). This is local validation, not hosted CI. + +From the repository root with Python 3.12 and NumPy 2.5.4 installed: + +```sh +python3.12 -B scripts/research_package.py --package research/retimed-t488-composition --check-only +python3.12 -B scripts/research_package.py --package research/retimed-t488-composition +``` + +Set `TMPDIR` to a mounted writable research output location before running; generated files remain outside the package. Source reconstruction and full replay require the exact pinned canonical source closure; they do not fetch mutable branch names. + +The primary scientific run freshly replayed both changed native providers before its completed full admission. Unchanged ancestor native/parent evidence is explicitly authenticated reuse. A packaged all-in-one wrapper is a separate delivery artifact and is not described as end-to-end tested unless actually executed. + +[PROOF.md](PROOF.md) explains the composition and costs. [CREDITS.md](CREDITS.md) retains source attribution. Component manifests bind exact bytes, Git blob identities and originating heads. Decompressed semantics, rather than gzip container identity, are used when comparing regenerated compressed artifacts. + +## Conditional scope + +All inherited all-size dispatch/compiler and recursive rounding premises remain. So do common-label and mutable-source realization, whole-call hosting, SCALAR/COPY/CLEAR and zero-allocation contracts, uniform coefficient/stock bounds, bootstrap, precision, tape/recovery, and analytic/BIT H1-H5 assumptions. Finite symbolic and integer checks establish their stated instances and implications, not those general premises. No unconditional multiplication theorem, formal-kernel verification, independent human peer review or selected-frontier update is claimed. + +## Open next questions + +Further work should change the supplier, geometry or recursive interface, with a complete paid bill; repeated repacking under fixed widths is ceiling-limited. A separate valuable direction is a general proof of an inherited all-size obligation. Structured questions, first steps and blockers are in [TASK.json](TASK.json). + +## Recorded complete scientific release + +[evidence/recorded-admission/COMPLETE-ADMISSION.json](evidence/recorded-admission/COMPLETE-ADMISSION.json) links byte-exact source, native, owner, package and release evidence. All seven distinct stages passed; full admission took about 26.8 minutes, excluding earlier native generation. The release receipt is `c688e73f02e23fed9576d03a28139af72d904e6789164d7ff9d831cd1f253a0d` and its package manifest is `9b839aa7bf05ad0c2609677dfe35f4a317acaffec8813ff3b922fa2c5b7270fd`. + +The bounded checker cross-binds these receipts to fresh owner rows, canonical native payloads, complete paid costs and exact modern arithmetic. The original serialized fill is retained so every admitted row can be compared to the fresh reconstruction. Recorded receipt consistency is not independent attestation or a fresh complete replay. Twelve targeted receipt mutation tests reject altered source, supplier, owner, cost, stage, comparator and release bindings; their synthetic fixture does not constitute scientific evidence. + +The published source at commit `2695d36521e4c9e196c84fef24b31e0607b4904a` passed the bounded GitHub replay. [Hosted run](https://github.com/CrocSwap/integer-mult-bounds/actions/runs/39130321334) is distinct from complete local scientific admission. Its full public replay is currently running and will be reported only at terminal completion. diff --git a/research/retimed-t488-composition/SOURCES.json b/research/retimed-t488-composition/SOURCES.json new file mode 100644 index 0000000000..0839f4876a --- /dev/null +++ b/research/retimed-t488-composition/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "67f085acd86acd7d4e03922d9cf4b26bca66fed5", + "sha256": "47b42433f5a85809a3aadd29c2c339da2c6ed728e4f7762df6b88bccb7874cf0" + } + ] +} diff --git a/research/retimed-t488-composition/TASK.json b/research/retimed-t488-composition/TASK.json new file mode 100644 index 0000000000..c6d1a992bd --- /dev/null +++ b/research/retimed-t488-composition/TASK.json @@ -0,0 +1,65 @@ +{ + "schema_version": 1, + "task_id": "scalar-to-moment", + "priority_revision": 6, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "original_card": { + "id": "scalar-to-moment", + "question": "Can one known scalar simplification be converted into an actual paid-profile improvement?", + "starting_points": [ + "research/r439-bsection-stars-seed01/README.md", + "certificates/selected-result.json" + ], + "methods": [ + "Derive the changed legal frame itinerary and exact child histogram.", + "Prove a scoped obstruction showing why that scalar gain cannot change the paid contract." + ], + "acceptance_gate": "An unchanged histogram is not a kappa gain; record any separate runtime or proof benefit explicitly.", + "first_step": { + "command": [ + "python3", + "-B", + "research/r439-bsection-stars-seed01/verify.py" + ], + "expected": "PASS_R439_BSECTION_STARS", + "inspect": "Observe that the positive control improves scalar counts while retaining the paid histogram.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Choose one simplification and derive the complete changed frame itinerary, or prove why it cannot change the histogram.", + "bottleneck_link": "A legal change to the histogram, not addition count alone, is the bridge to an exponent gain.", + "allowed_variations": [ + "One existing scalar simplification and one proposed frame-path change." + ], + "scope_change_triggers": [ + "Submitting only another scalar count as completion of a paid-profile task." + ], + "overlap_terms": [ + "scalar simplification", + "paid profile", + "R439" + ] + }, + "scope_status": "refined", + "actual_scope": "Compose the exact PR3642 retimed providers with PR3633 T488 allocation; reconstruct literal ownership and fresh native/complete conditional admission, retaining all inherited assumptions.", + "scope_change_reason": "Explicit user-directed improvement search, retrospectively classified under scalar-to-moment. This work composes existing local and allocation advances; it does not claim to discover either predecessor.", + "bottleneck_link": "Close the remaining T530 packing gap after a proven local paid-profile improvement, with unchanged helper widths and complete physical admission.", + "stop_rule": "Stop this scoped contribution after exact local proof, full source-bound T488 release, independent arithmetic/owner checks, reproducible publication and explicit unresolved assumptions; do not infer untested compositions.", + "outcome": "partial", + "evidence": "PROOF.md; owners/evidence/FRESH-RUN.json; numerics/RECORDED.json; full-replay/PORTABILITY-VALIDATION.json; PUBLIC-VALIDATION.json; evidence/recorded-admission/COMPLETE-ADMISSION.json", + "author": "Rohan Arun", + "ai_assistance": "Substantial OpenAI Codex assistance for search, exact proof, code, independent agent cross-checks, integration and documentation; no independent human review claimed.", + "open_questions": [ + { + "question": "Can another supplier or interface change lower the paid moment?", + "why_it_matters": "Further fixed-width packing alone is ceiling-limited.", + "first_step": "Use retained single-ADD and coupled retiming negatives to select a distinct source-boundary or geometry change.", + "blocked_by": "A legal complete operator, physical allocation, and outer transfer are required." + }, + { + "question": "Can the inherited conditional compiler or common-label premise be discharged?", + "why_it_matters": "A finite construction does not establish an unconditional multiplication theorem.", + "first_step": "Isolate a precise all-size realization implication and prove it with a separately checkable general argument.", + "blocked_by": "Finite replay and numerical checks alone do not establish the general premise." + } + ] +} diff --git a/research/retimed-t488-composition/VERIFY.json b/research/retimed-t488-composition/VERIFY.json new file mode 100644 index 0000000000..176df7213e --- /dev/null +++ b/research/retimed-t488-composition/VERIFY.json @@ -0,0 +1,20 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [ + "numpy==2.5.4" + ], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Fresh local operator and literal owner reconstruction/audit, two rational moment engines and modern outer arithmetic; authenticated portable source closure and explicitly scoped original release summary. Does not rerun complete native/controller admission." + } + ] +} diff --git a/research/retimed-t488-composition/admission_evidence.py b/research/retimed-t488-composition/admission_evidence.py new file mode 100644 index 0000000000..0c52479fad --- /dev/null +++ b/research/retimed-t488-composition/admission_evidence.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Bind recorded full admission to fresh bounded results; never run a scientific gate. + +Export only after terminal success: + python3.12 -B admission_evidence.py --package PACKAGE --run FULL_RUN \ + --source RETIMED_SOURCE --export FRESH_EVIDENCE_DIRECTORY +The directory contains COMPLETE-ADMISSION.json and byte-exact upstream receipts. +Integrate with check(package, summary_path, owner_profile, kappa, literal_dir). +Receipt consistency is not independent attestation or a fresh full admission. +""" +from pathlib import Path, PurePosixPath +from fractions import Fraction as Q +import argparse, gzip, hashlib, json + +STAGES = ('owners', 'parent-lift', 'rebind', 'discovery', + 'outer-check_ledger.py', 'outer-independent_check.py', 'release') +FILES = { + 'admission': 'admission/RESULT.json', + 'stages': 'admission/STAGES.json', + 'release': 'admission/release/RELEASE-RECEIPT.json', + 'manifest': 'admission/package/MANIFEST.json', + 'spec': 'admission/package/new/SPEC.json', + 'profile': 'admission/package/new/PROFILE.json', + 'outer_claim': 'admission/package/outer/OUTER-CLAIM.json', + 'native': 'native/NATIVE-RECEIPT.json', + 'fill': 'FILL-legacy.json.gz', + 'order': 'allocation/ORDER.json', + 'dispatch': 'allocation/DISPATCH.json', +} + +def need(ok, why): + if not ok: + raise ValueError(why) + +def digest(data): + return hashlib.sha256(data).hexdigest() + +def read(path): + return json.loads(Path(path).read_bytes()) + +def profile(value): + need(isinstance(value, dict) and value, 'nonempty profile required') + need(all(isinstance(k, str) and k.isdigit() and str(int(k)) == k + and type(v) is int and v >= 0 for k, v in value.items()), 'profile integer schema') + return value + +def check(package, summary_path, owner_profile, kappa, literal_dir): + """Read-only check. The caller must supply freshly verified bounded outputs. + + ARTIFACTS authenticates this module and all exported evidence in aggregate use. + No command or absolute path in an upstream receipt is ever executed/resolved. + """ + package, summary_path, literal_dir = map(Path, (package, summary_path, literal_dir)) + summary = read(summary_path) + need(summary['schema'] == 'retimed-t488-recorded-admission/v1', 'recorded schema') + need(summary['status'] == 'PASS_T488_RETIMER_COMPLETE_CONDITIONAL_RELEASE', 'summary terminal status') + need(set(summary['files']) == set(FILES) | {'source_manifest'}, 'complete evidence inventory') + blobs = {} + for key, entry in summary['files'].items(): + rel = PurePosixPath(entry['path']) + need(not rel.is_absolute() and '..' not in rel.parts and rel.parts, 'unsafe evidence path') + p = summary_path.parent.joinpath(*rel.parts) + need(p.is_file() and not p.is_symlink() and summary_path.parent.resolve() in p.resolve().parents, + 'evidence must be a regular file within bundle') + blobs[key] = p.read_bytes() + need(digest(blobs[key]) == entry['sha256'], 'recorded bytes changed: ' + key) + data = {k: json.loads(v) for k, v in blobs.items() if k != 'fill'} + a, release, manifest, native = (data[k] for k in ('admission', 'release', 'manifest', 'native')) + deps = read(package/'full-replay/DEPENDENCIES.json') + spec = read(package/'full-replay/SPEC.json') + C = Q(spec['expected_complex_lower']) + K = Q(kappa) + need(profile(owner_profile) == profile(spec['expected_complete_profile']) == profile(a['profile']) + == profile(summary['profile']) == profile(data['profile']) + == profile(data['spec']['expected']['global_profile']), 'exact complete profile binding') + need(K == C-Q(spec['outer_margin'])-Q(spec['grid_margin']), 'fixed transfer expression') + need(Q(summary['kappa']) == Q(a['kappa']) == Q(a['kappa_decimal']) + == Q(release['kappa_decimal']) == Q(data['outer_claim']['kappa_rational']) + == Q(data['outer_claim']['kappa']) == K, 'full modern endpoint binding') + need(Q(a['complex_lower']) == Q(data['spec']['expected']['complex_lower']) == C, + 'complex endpoint binding') + need(a['status'] == 'PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE' + and release['status'] == 'PASS_RELEASE', 'raw terminal admission/release required') + need(a['release_receipt_sha256'] == digest(blobs['release']), 'release receipt link') + need(a['package_manifest_sha256'] == release['manifest_sha256'] == digest(blobs['manifest']), + 'final package manifest link') + need(a['source_manifest_sha256'] == native['manifest_sha256'] + == deps['source_manifest_sha256'] == digest(blobs['source_manifest']), 'retimed source manifest link') + need(len(data['source_manifest']) == a['source_file_count'] == deps['source_file_count'], + 'complete source inventory') + need(a['native_receipt_sha256'] == digest(blobs['native']), 'native receipt link') + need(native['status'] == 'PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE' + and native['fresh_current_provider_count'] == 2, 'both current suppliers freshly replayed') + claim_bytes = (package/'full-replay/comparator/PR3642-CLAIM.json').read_bytes() + claim_pin = deps['files']['comparator/PR3642-CLAIM.json'] + need(digest(claim_bytes) == claim_pin['sha256'] == summary['comparison_claim_sha256'], + 'authenticated PR3642 comparator') + prior = Q(json.loads(claim_bytes)['kappa']) + need(prior == Q(spec['comparison_kappa']) == Q(summary['prior_PR3642']) and K > prior, + 'strict improvement over modern PR3642 claim') + need(Q(summary['absolute_gain']) == K-prior, 'exact headline gain') + stages = data['stages'] + need(stages == a['stages'] == summary['admission_stages'], 'raw stage list link') + need(tuple(s['name'] for s in stages) == STAGES and all(type(s['exit_code']) is int + and s['exit_code'] == 0 for s in stages), 'seven distinct ordered scientific stages') + script_paths = {'owners':'reconstruct.py', 'parent-lift':'lift_parent.py', + 'rebind':'new/rebind.py', 'discovery':'replay.py', + 'outer-check_ledger.py':'outer/check_ledger.py', + 'outer-independent_check.py':'outer/independent_check.py', 'release':'verify_release.py'} + for s in stages: + need(s['script_sha256'] == manifest[script_paths[s['name']]], 'stage script/package link: '+s['name']) + for key, rel in [('spec','new/SPEC.json'), ('profile','new/PROFILE.json'), + ('outer_claim','outer/OUTER-CLAIM.json'), ('fill','new/borrow-fill/FILL.json.gz'), + ('order','new/borrow-fill/ORDER.json'), ('dispatch','new/borrow-fill/DISPATCH.json')]: + need(manifest[rel] == digest(blobs[key]), 'package payload link: ' + key) + expected = read(package/'owners/upstream/EXPECTED.json') + literal = gzip.decompress((literal_dir/'FILL.json.gz').read_bytes()) + need(digest(literal) == expected['payload_sha256'], 'fresh literal owner payload pin') + need(json.loads(gzip.decompress(blobs['fill'])) == json.loads(literal), + 'admitted fill must equal every fresh literal owner row') + need(a['fill_sha256'] == digest(blobs['fill']), 'admitted fill hash') + for key in ('order', 'dispatch'): + name = key.upper()+'.json' + need(a[key+'_sha256'] == digest(blobs[key]) == expected['literal_files'][name] + == digest((literal_dir/name).read_bytes()), 'exact owner '+key+' binding') + geometry, expectation = data['spec']['geometry'], data['spec']['expected'] + need(a['replicas'] == geometry['replicas'] == spec['replicas'] == expected['replicas'] + and expectation['hosted_residuals'] == spec['roles'] == expected['rows'] + and expectation['physical'] == expected['physical'] + and expectation['live'] == 896*spec['replicas'], 'geometry/roles/physical binding') + pins = read(package/'owners/NATIVE-BINDING.json') + need(set(native['providers']) == set(pins), 'exact provider set') + for tag, pin in pins.items(): + p = native['providers'][tag] + word = digest((package/('local-audit/words/RETIMED644-660-'+tag+'.json.gz')).read_bytes()) + canonical = (package/('owners/native/checked-'+tag+'/CANONICAL-WORD.json.gz')).read_bytes() + need(p['word_sha256'] == word, 'native raw supplier word: '+tag) + need(digest(canonical) == pin['canonical_sha256'] + == p['complete_native_files']['local/CANONICAL-WORD.json.gz'] + == native['cache_files'][word+'/local/CANONICAL-WORD.json.gz'], 'canonical native receipt link: '+tag) + need(digest(gzip.decompress(canonical)) == pin['payload_sha256'], 'canonical native payload: '+tag) + need(p['complete_native_files']['local/FULL-WORD.json.gz'] == word, + 'full native input: '+tag) + for rel, sha in p['complete_native_files'].items(): + need(native['cache_files'][word+'/'+rel] == sha, 'native provider/cache inventory: '+tag) + return {'status':'PASS_RECORDED_ADMISSION_CROSS_BINDING', 'kappa':str(K), + 'source_manifest_sha256':digest(blobs['source_manifest']), + 'package_manifest_sha256':digest(blobs['manifest']), + 'scope':'Byte-exact recorded receipt consistency with fresh bounded construction. Not independent attestation or a fresh native/controller/full admission; inherited conditional hypotheses remain.'} + + +def export(package, run, source, destination): + """Preserve originals byte-for-byte. Refuse incomplete runs before creating output.""" + package, run, source, destination = map(Path, (package, run, source, destination)) + need(not destination.exists(), 'fresh export destination required') + blobs = {k:(run/rel).read_bytes() for k, rel in FILES.items()} + blobs['source_manifest'] = (source/'MANIFEST.json').read_bytes() + a = json.loads(blobs['admission']) + need(a['status'] == 'PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE', 'cannot export a pending admission') + prior = Q(read(package/'full-replay/comparator/PR3642-CLAIM.json')['kappa']) + summary = {'schema':'retimed-t488-recorded-admission/v1', + 'status':'PASS_T488_RETIMER_COMPLETE_CONDITIONAL_RELEASE', 'profile':a['profile'], + 'kappa':a['kappa'], 'prior_PR3642':str(prior), 'absolute_gain':str(Q(a['kappa'])-prior), + 'comparison_claim_sha256':digest((package/'full-replay/comparator/PR3642-CLAIM.json').read_bytes()), + 'admission_stages':json.loads(blobs['stages']), 'files':{}, + 'scope':'Recorded complete conditional release; fresh bounded cross-check is separate. This export does not replay native/controller/full scientific gates.'} + destination.mkdir(parents=True) + for key, blob in blobs.items(): + name = key+('.json.gz' if key == 'fill' else '.json') + (destination/name).write_bytes(blob) + summary['files'][key] = {'path':name, 'sha256':digest(blob)} + summary_path = destination/'CANDIDATE-ADMISSION.json' + summary_path.write_text(json.dumps(summary, indent=2)+'\n') + check(package, summary_path, a['profile'], a['kappa'], run/'allocation') + complete = destination/'COMPLETE-ADMISSION.json' + summary_path.rename(complete) + return complete + +if __name__ == '__main__': + ap=argparse.ArgumentParser(description=__doc__) + for flag in ('package','run','source','export'): ap.add_argument('--'+flag, required=True, type=Path) + args=ap.parse_args() + print(export(args.package, args.run, args.source, args.export)) diff --git a/research/retimed-t488-composition/evidence/BOUNDED-WITH-RECORDED-ADMISSION.json b/research/retimed-t488-composition/evidence/BOUNDED-WITH-RECORDED-ADMISSION.json new file mode 100644 index 0000000000..97de4383c2 --- /dev/null +++ b/research/retimed-t488-composition/evidence/BOUNDED-WITH-RECORDED-ADMISSION.json @@ -0,0 +1,37 @@ +{ + "status": "PASS_FRESH_BOUNDED_RETIMED_T488", + "stages": [ + { + "name": "local", + "exit_code": 0, + "seconds": 3.004048665985465 + }, + { + "name": "owners", + "exit_code": 0, + "seconds": 27.94966020900756 + }, + { + "name": "numerics", + "exit_code": 0, + "seconds": 0.6374257910065353 + }, + { + "name": "full-replay-inputs", + "exit_code": 0, + "seconds": 0.07992233301047236 + } + ], + "profile": { + "1": 10817496, + "2": 3179808, + "3": 1024434, + "4": 447984, + "48": 186782, + "5": 94794, + "8": 35136 + }, + "candidate_kappa": "17304188997660711638039999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "recorded_full_admission_present": true, + "scope": "Fresh local, literal-owner and arithmetic checks. Stored full admission, when present, is cross-bound evidence, not a new native/controller replay. All inherited theorem assumptions remain." +} diff --git a/research/retimed-t488-composition/evidence/FRONTIER-REVIEW.json b/research/retimed-t488-composition/evidence/FRONTIER-REVIEW.json new file mode 100644 index 0000000000..915d76e8e4 --- /dev/null +++ b/research/retimed-t488-composition/evidence/FRONTIER-REVIEW.json @@ -0,0 +1,176 @@ +{ + "status": "READ_ONLY_FRONTIER_AND_PUBLIC_ARITHMETIC_REVIEW_COMPLETE", + "utc": "2026-10-18T13:12:12.288968+00:00", + "own_pr": 3653, + "own_head_reviewed": "2695d36521e4c9e196c84fef24b31e0607b4904a", + "own_latest": { + "headRefOid": "2695d36521e4c9e196c84fef24b31e0607b4904a", + "statusCheckRollup": [ + { + "__typename": "CheckRun", + "completedAt": "2026-10-18T13:11:42Z", + "conclusion": "SUCCESS", + "detailsUrl": "https://github.com/CrocSwap/integer-mult-bounds/actions/runs/39130321334/job/117683999002", + "name": "plan", + "startedAt": "2026-10-18T13:09:46Z", + "status": "COMPLETED", + "workflowName": "Registered research packages" + }, + { + "__typename": "CheckRun", + "completedAt": "0001-01-01T00:00:00Z", + "conclusion": "", + "detailsUrl": "https://github.com/CrocSwap/integer-mult-bounds/actions/runs/39130321334/job/117684415499", + "name": "replay (research/retimed-t488-composition) / replay (research/retimed-t488-composition)", + "startedAt": "2026-10-18T13:11:44Z", + "status": "IN_PROGRESS", + "workflowName": "Registered research packages" + } + ] + }, + "comparator_pr": 3642, + "comparator_head": "80c0f2906d4ecd66325c42fcf3cfd5070a088bdb", + "comparator_checks": [], + "comparator_change": "One follow-up commit adds end-to-end public-wrapper replay receipts and semantic recorded-evidence checks. No local words, numerical engines, profile, endpoint or mathematical predicate used by our comparison changed.", + "source_bindings": [ + { + "path": "research/staged-release-retiming-t530/numerics/recorded/outer/CLAIM.json", + "new_head_blob": "c8a315e9c5d27a9b4a8f7bc23b315e8f7a5e0411", + "sha256": "1e7e8b82cd072af0198e6651db37f4ec5d52cda599f2538c678cc6519d2cc06b", + "byte_identical_to_pinned_old_head": true + }, + { + "path": "research/staged-release-retiming-t530/full-admission/evidence/runtime-summary/outer/OUTER-CLAIM.json", + "new_head_blob": "20554ddb9e22012fa6a93a9d9197229d9fd0f3d7", + "sha256": "512d8c62a12e669040cf849c4b9774af297c585208a0ce0d86e517dc29fc46cd", + "byte_identical_to_pinned_old_head": true + }, + { + "path": "research/staged-release-retiming-t530/numerics/words/RETIMED644-660-base.json.gz", + "new_head_blob": "d69125e0c7d34af9299e411ada5c30dfc7b95ad1", + "sha256": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "byte_identical_to_pinned_old_head": true + }, + { + "path": "research/staged-release-retiming-t530/numerics/words/RETIMED644-660-extra.json.gz", + "new_head_blob": "f3c580b06506e8888fe766c9a1e0bb1a748d7b74", + "sha256": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "byte_identical_to_pinned_old_head": true + }, + { + "path": "research/staged-release-retiming-t530/numerics/vendor-repo/research/pending-claims-independent-pricing/arith.py", + "new_head_blob": "b9e30144438b375ee999e53c5fe7051e381e4c6f", + "sha256": "1b4766610223bbf5e346d7cebc036eaeaedfa2f7200c075136bd750ab26ece88", + "byte_identical_to_pinned_old_head": true + }, + { + "path": "research/staged-release-retiming-t530/numerics/recorded/outer/outer/check_ledger.py", + "new_head_blob": "d3b6149c5c1cca84c7c305f6e2e32c814e30777e", + "sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "byte_identical_to_pinned_old_head": true + }, + { + "path": "research/staged-release-retiming-t530/full-admission/reproduce.py", + "new_head_blob": "634a3e10dc5a0af0eae65ff0788a9dbf342124b9", + "sha256": "9ec43247d2b3af6e4fce61173a4e59aa13b845792776289995cb108285f8aede", + "byte_identical_to_pinned_old_head": true + } + ], + "highest_comparable_claim_observed": "PR3642 modern conditional kappa0.001730394391813963415120-1e-46-1e-70; body reports completed original scientific and public-wrapper replay. Those full runs were not repeated here.", + "own_higher_candidate": "PR3653 targets0.001730418899766071163804-1e-46-1e-70; prospective until complete release.", + "absolute_gain": "0.000000024507952107748684", + "incomparable_numeric_hits": { + "3647": "BIT c only, wholekappa unchanged", + "3630": "packing ceiling, not newachieved bound", + "3562": "ordinarybackend saving, explicitlynotnewmultiplicationexponent", + "3147": "sharingceilings, explicitlyno newglobal kappa", + "3181": "dynamicrange/ceilingaudit, nonew kappa", + "3039": "negative construction screen, nonew kappa" + }, + "review_findings": [], + "review_notes": [ + "Public numerics derive4392callprofile from exact pinned old/new word reports and fresh ownerbaseline; separate local/operator audit realizesreports.", + "Both exact interval engines use positive childranks<73; normalizedmoment strictlyincreasing ensuresbracket uniqueness.", + "Modernouter rechecksprofilearithmetic and retainsbothmargin terms,63strictinequalities,17controls.", + "PR3642 recorded modernCLAIM and OUTER-CLAIM agree exactly; supplier-onlyintermediate isnotused.", + "No full/admission/native verification or external mutation performed." + ], + "remaining_obligations": [ + "Complete strict release and source-bind its resulting profile andmodern\u03ba.", + "Run publicall-in-onefullwrapper and record actual fresh/reusedcoverage.", + "Hosted CI pending/absent is separate from claimedlocalreplay; noindependenthumanreview or allsizeproof." + ], + "coverage": "Newest150openPR bodies numeric-screened,11candidatebody scopes checked; selected7heads/CI and latest10all-statePR guard. Notanexhaustivehistoricalglobalbestcertificate.", + "latest_all_state_guard": [ + { + "headRefOid": "2695d36521e4c9e196c84fef24b31e0607b4904a", + "number": 3653, + "state": "OPEN", + "title": "Draft: retimed T488 composition targeting conditional kappa 0.00173041889976", + "updatedAt": "2026-10-18T13:09:36Z" + }, + { + "headRefOid": "35f38c8482e70129860cdb174615bc8f2251b01a", + "number": 3652, + "state": "OPEN", + "title": "Independent QQ16 all-depth source and primitive certificate", + "updatedAt": "2026-10-18T13:08:44Z" + }, + { + "headRefOid": "19db8e46751725e6cda54f22ede16da5f6698b1e", + "number": 3651, + "state": "OPEN", + "title": "Prove the actual-width floors differ on perfect 500th powers", + "updatedAt": "2026-10-18T13:06:56Z" + }, + { + "headRefOid": "7bd54e91748eb9fc6b13d61d232b6a91e8158aba", + "number": 3650, + "state": "OPEN", + "title": "Add a source-shaped Lean bridge for compiler retention", + "updatedAt": "2026-10-18T13:04:51Z" + }, + { + "headRefOid": "f8768756d8ac4abb263295170a436ba54562fdcd", + "number": 3649, + "state": "OPEN", + "title": "Classify sharp noncubic ranks of the H6 odd-Gram family", + "updatedAt": "2026-10-18T13:02:37Z" + }, + { + "headRefOid": "a0d88d68d04a05e0f49dfb5f91bf429bfd853fe3", + "number": 3648, + "state": "OPEN", + "title": "Restore historical checks after the CI documentation update", + "updatedAt": "2026-10-18T12:56:09Z" + }, + { + "headRefOid": "36ff441479ff9c7e70d83f0becccd44da50effb8", + "number": 3647, + "state": "OPEN", + "title": "BIT c = 0.001736628253427115: composed R437 GL464 + public470 (whole \u03ba unchanged)", + "updatedAt": "2026-10-18T12:59:58Z" + }, + { + "headRefOid": "22dce8f7e3f12bc7f3d627784a81e45bee950ece", + "number": 3646, + "state": "OPEN", + "title": "Audit historical follow-up supplier saving bindings", + "updatedAt": "2026-10-18T12:46:49Z" + }, + { + "headRefOid": "99b901c9b5ac70cf441b3d7e585cc7b8744b5359", + "number": 3645, + "state": "OPEN", + "title": "Reduce R438 to 429 helpers with three source snapshots", + "updatedAt": "2026-10-18T12:49:36Z" + }, + { + "headRefOid": "58a754bf08ce63080822a28451aaa4952e2f6e2a", + "number": 3644, + "state": "OPEN", + "title": "Stop owned POSIX descendants after direct script completion", + "updatedAt": "2026-10-18T12:43:45Z" + } + ] +} diff --git a/research/retimed-t488-composition/evidence/INDEPENDENT-REPLAY-REVIEW.md b/research/retimed-t488-composition/evidence/INDEPENDENT-REPLAY-REVIEW.md new file mode 100644 index 0000000000..878523bd2c --- /dev/null +++ b/research/retimed-t488-composition/evidence/INDEPENDENT-REPLAY-REVIEW.md @@ -0,0 +1,27 @@ +# Independent read-only replay review: PR3653 at 2695d365 + +Verdict: no blocking defect found in the inspected replay composition. This is a source review and bounded input/hash check, not a completed scientific replay or formal proof. The queued packaged full replay must still finish before its final success status can be reported. + +Reviewed snapshot: `primary-integration/public-submission-2695d365/research/retimed-t488-composition`. Entry SHA256: `490a500e5182f04dff744e9a011d597ecef217d7cfd18ae33f7941714159cc80`. + +## Executed bounded checks + +Imported the committed entrypoint with bytecode disabled and executed its read-only `authenticate()`. All 87 vendored/comparator files passed exact inventory, SHA256, Git blob and declared immutable-head checks. Independently checked all 654 files in the already materialized retimed source against the identical pinned manifest (`fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0`). Expected total rank mass is 31,762,944 = 488 times 65,088. No owner/native/controller/full admission was duplicated. + +## Binding and cost review + +- `full-replay/reproduce.py:33-55,93-97`: immutable source closure and PR3642 comparator are authenticated; upstream materialization exports exactly 540 source files from frozen main commit 20ecf2891d80b5acf18d980b2164fb44ea7faa90, then reconstructs the 654-file retimed source. The generated native/admission drivers are supplied by this authenticated materializer chain, rather than fetched at runtime. +- Lines 103-118 reconstruct the complete literal T488 allocation and check identical old/new helper widths before applying each actual canonical local bill difference across 4,392 calls. This is deliberately only an expected invoice. The entrypoint does not declare success here. +- Lines 119-128 require fresh changed-native preparation and complete admission. Inspected the matching materialized `prepare_extension_native.py`: it authenticates retained evidence and both changed complete words; requires all five native stages and all 632 arbitrary columns, both orientations, complete actual paid profiles, 408 helpers, eight centers and 91 private zero buffers. Retained predecessor/parent evidence reuse is explicit, fully hash-bound, and not represented as fresh. +- Inspected matching `admit_extension.py`: binds full source/native inventories, exact words, profiles and parent receipt; reconstructs owners, lifts the parent and rebinds against actual canonical native data. Complete physical stock is explicitly checked as 896*T+408+8+91+2, or 437,757 at T488. The full profile includes idle/chronological charges and is independently regenerated, not accepted merely because SPEC states it. +- The same adapter retains strict replay plus independent owner/core/invoice, controller, geometry and rejection checks. Its existing block-norm refinement checks actual scalar/Horner prefixes for both native orientations, preserves invocation/bridge charges, requires full physical-stock norm and partial-cover reserve, and adds forged/undercharged block-norm controls. I did not independently prove the inherited block-norm theorem; this review establishes the required computational gates remain on the execution path. +- Inspected matching `verify_release.py:47-83`: strict supplier verification and independent outer replay must both succeed. The actual strict ASSEMBLY must have the exact global status, 47 outer constraints, a complex endpoint bracketing B, a complex profile equal to the ledger profile, and the pinned bit endpoint. Thus the modern outer is tied to admitted supplier data, not only expected values. +- Wrapper lines 127-135 additionally require final exact replica count/profile, rational equality kappa=C-10^-46-10^-70, C=0.001730418899766071163804, strict improvement over the authenticated PR3642 modern claim, rational/decimal agreement, release receipt digest and package-manifest agreement. The inherited admission compares PR2969, but the wrapper independently enforces the newer exact PR3642 comparison; it does not mistake the old comparator for the modern target. + +## Reproducibility limits and remaining acceptance gate + +Python 3.12 and the documented numpy/scipy/sympy/mpmath/psutil/gmpy2 dependencies, Git, the frozen-main object, and an existing writable external output parent are required. This command does not fetch objects or install dependencies. Output must be fresh and outside source/package. Assertion optimization is rejected; inherited witness-discovery overrides and PYTHONPATH are removed from child environments. Failed stages preserve logs and cannot reach the full success status. + +The package's independent bounded `owners/run.py` is a separate audit; the full replay uses the inherited complete admission owner path rather than invoking that auxiliary wrapper. Both paths are useful, but their completion should be reported separately. The existing portability receipt explicitly covers input guards and source materialization only. Neither it nor this review proves the queued full replay has completed. + +No publication files were edited. No heavy process was launched. All inherited theorem-scope conditions (including all-size realization, compiler/dispatcher, scalar/zero allocation, rounding, bootstrap, tape/recovery and analytic/BIT premises) remain; passing finite checks is not an unconditional integer-multiplication theorem. diff --git a/research/retimed-t488-composition/evidence/RECEIPT-MUTATION-TESTS.json b/research/retimed-t488-composition/evidence/RECEIPT-MUTATION-TESTS.json new file mode 100644 index 0000000000..8448aa69cc --- /dev/null +++ b/research/retimed-t488-composition/evidence/RECEIPT-MUTATION-TESTS.json @@ -0,0 +1,70 @@ +{ + "status": "PASS_RECORDED_ADMISSION_LINK_MUTATION_TESTS", + "synthetic_fixture_only": true, + "positive_fixture_passed": true, + "export_roundtrip_passed": true, + "pending_export_rejected": true, + "rejected_controls": [ + { + "name": "pending raw admission", + "rejected": true, + "reason": "raw terminal admission/release required" + }, + { + "name": "wrong comparator with unchanged kappa", + "rejected": true, + "reason": "authenticated PR3642 comparator" + }, + { + "name": "wrong full modern endpoint", + "rejected": true, + "reason": "full modern endpoint binding" + }, + { + "name": "different source with repaired internal hashes", + "rejected": true, + "reason": "retimed source manifest link" + }, + { + "name": "different supplier word with repaired receipt hash", + "rejected": true, + "reason": "native raw supplier word: base" + }, + { + "name": "different canonical native word", + "rejected": true, + "reason": "canonical native receipt link: extra" + }, + { + "name": "seven zero exits but repeated scientific stage", + "rejected": true, + "reason": "seven distinct ordered scientific stages" + }, + { + "name": "stage ran different script", + "rejected": true, + "reason": "stage script/package link: rebind" + }, + { + "name": "failed raw release with repaired hash", + "rejected": true, + "reason": "raw terminal admission/release required" + }, + { + "name": "private buffer cost omitted with repaired package hash", + "rejected": true, + "reason": "geometry/roles/physical binding" + }, + { + "name": "different owner row with unchanged profile and repaired hashes", + "rejected": true, + "reason": "admitted fill must equal every fresh literal owner row" + }, + { + "name": "raw receipt bytes changed", + "rejected": true, + "reason": "recorded bytes changed: release" + } + ], + "scope": "Only receipt consistency was tested. Synthetic terminal fixture is not evidence of scientific admission." +} diff --git a/research/retimed-t488-composition/evidence/recorded-admission/COMPLETE-ADMISSION.json b/research/retimed-t488-composition/evidence/recorded-admission/COMPLETE-ADMISSION.json new file mode 100644 index 0000000000..33f0a89535 --- /dev/null +++ b/research/retimed-t488-composition/evidence/recorded-admission/COMPLETE-ADMISSION.json @@ -0,0 +1,181 @@ +{ + "schema": "retimed-t488-recorded-admission/v1", + "status": "PASS_T488_RETIMER_COMPLETE_CONDITIONAL_RELEASE", + "profile": { + "1": 10817496, + "2": 3179808, + "3": 1024434, + "4": 447984, + "48": 186782, + "5": 94794, + "8": 35136 + }, + "kappa": "17304188997660711638039999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "prior_PR3642": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "absolute_gain": "6126988026937171/250000000000000000000000", + "comparison_claim_sha256": "1e7e8b82cd072af0198e6651db37f4ec5d52cda599f2538c678cc6519d2cc06b", + "admission_stages": [ + { + "command": [ + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/env/bin/python", + "-B", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package/reconstruct.py", + "--out", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/owners" + ], + "exit_code": 0, + "log_sha256": "b01e79c0181874cf25ef7a3c50b883a0530a3b58bcd5812c95a812dc1792eff9", + "name": "owners", + "script_sha256": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "seconds": 25.99480620911345 + }, + { + "command": [ + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/env/bin/python", + "-B", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package/lift_parent.py", + "--package", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package", + "--owners", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/owners", + "--out", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/parent-data" + ], + "exit_code": 0, + "log_sha256": "430d982dddcdcd6976bcfa18d5bb718bb6c3bcaa7918722464c817063563b878", + "name": "parent-lift", + "script_sha256": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "seconds": 52.78128975001164 + }, + { + "command": [ + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/env/bin/python", + "-B", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package/new/rebind.py", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/native/native-cache/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/native/native-cache/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/rebound" + ], + "exit_code": 0, + "log_sha256": "fc6875d07505a4fc77f0aa16e29393c437ff0e386418ad9429b11c32e3d0b466", + "name": "rebind", + "script_sha256": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b", + "seconds": 6.174189292010851 + }, + { + "command": [ + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/env/bin/python", + "-B", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/layout/packing74/replay.py", + "--data", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/layout/packing74/candidate", + "--work", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/discovery", + "--local", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/native/native-cache/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local", + "--discover" + ], + "exit_code": 0, + "log_sha256": "ece8ce71444db4fea7a2088410cc26d28a1f0bac00d1ddc5865a6ff222143356", + "name": "discovery", + "script_sha256": "4f5c0926b70edb5aef3af0f8a8d9fa8119fa7af6603df1721c0dc31760b08254", + "seconds": 633.2676523750415 + }, + { + "command": [ + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/env/bin/python", + "-B", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package/outer/check_ledger.py" + ], + "exit_code": 0, + "log_sha256": "df4467c4d6987e7fec54d2dd34de0c01c59c7559ddef5d036254fde5b33ec26c", + "name": "outer-check_ledger.py", + "script_sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "seconds": 0.11420095805078745 + }, + { + "command": [ + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/env/bin/python", + "-B", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package/outer/independent_check.py" + ], + "exit_code": 0, + "log_sha256": "db80e205356bbad8ef1575a35afac0201a997cb57f15e3c63fa670a7f59472e3", + "name": "outer-independent_check.py", + "script_sha256": "a5a0361539ec7cae9eb6c0371f857919335a1720040f22af291aa3e34fc864c7", + "seconds": 0.04187204199843109 + }, + { + "command": [ + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/env/bin/python", + "-B", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/package/verify_release.py", + "--main", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/retiming-source", + "--work", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/admission/release", + "--native-cache", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/native/native-cache", + "--jobs", + "1" + ], + "exit_code": 0, + "log_sha256": "94f753277f2b6c44c2663a5bffee0b21fe0166c78e9dd3ee7b16de4582ae4a3a", + "name": "release", + "script_sha256": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b", + "seconds": 884.4964472909924 + } + ], + "files": { + "admission": { + "path": "admission.json", + "sha256": "53e842c99b7304773e00416d37ddd9faad47b0c150b17d92d6e8744f0fa66270" + }, + "stages": { + "path": "stages.json", + "sha256": "63e9a43cbb14a5e58c9f49bd7da2c4f952266bff96e32b379a9895235f49c2ae" + }, + "release": { + "path": "release.json", + "sha256": "c688e73f02e23fed9576d03a28139af72d904e6789164d7ff9d831cd1f253a0d" + }, + "manifest": { + "path": "manifest.json", + "sha256": "9b839aa7bf05ad0c2609677dfe35f4a317acaffec8813ff3b922fa2c5b7270fd" + }, + "spec": { + "path": "spec.json", + "sha256": "eac85095015076f426c05cd452cdd80561a55fe52a876fc69347384c275d6d04" + }, + "profile": { + "path": "profile.json", + "sha256": "8b21b03d25cb7bb226b91a63f2458e7b2e92df5779d9e99f0b5275c4c9e90afd" + }, + "outer_claim": { + "path": "outer_claim.json", + "sha256": "c7455323c62a5b1d5c9ceef07a305a5758df6971ac8f88e2be5223eb5f4c7553" + }, + "native": { + "path": "native.json", + "sha256": "3ce3201707762aa08fd0b22200ef662339138022760f289fa94521da9e2aa354" + }, + "fill": { + "path": "fill.json.gz", + "sha256": "4ccbadfabea3a7041783024dc8cd0cc0353d3a18c2286acacef50fe8c3141d8f" + }, + "order": { + "path": "order.json", + "sha256": "a4c8f6c96716da0a6d2057373bf3ec3ffb1c7f86bf2b263416dc1c00fee23555" + }, + "dispatch": { + "path": "dispatch.json", + "sha256": "15f187340cd32037492d4ce57820a41873dc015f4c689a8596d59c55f0077892" + }, + "source_manifest": { + "path": "source_manifest.json", + "sha256": "fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0" + } + }, + "scope": "Recorded complete conditional release; fresh bounded cross-check is separate. This export does not replay native/controller/full scientific gates." +} diff --git a/research/retimed-t488-composition/evidence/recorded-admission/admission.json b/research/retimed-t488-composition/evidence/recorded-admission/admission.json new file mode 100644 index 0000000000..0cc9d58a33 --- /dev/null +++ b/research/retimed-t488-composition/evidence/recorded-admission/admission.json @@ -0,0 +1,382 @@ +{ + "actual_expected_helpers": 408, + "comparison_claim_sha256": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "comparison_head": "e2ca469b08385d3d5e29a918d66dbefaf889e9f3", + "comparison_kappa": "17240352247481048785499999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "comparison_pr": 2969, + "complex_lower": "432604724941517790951/250000000000000000000000", + "dispatch_sha256": "15f187340cd32037492d4ce57820a41873dc015f4c689a8596d59c55f0077892", + "external_input_sha256": { + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/FILL-legacy.json.gz": "4ccbadfabea3a7041783024dc8cd0cc0353d3a18c2286acacef50fe8c3141d8f", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/allocation/DISPATCH.json": "15f187340cd32037492d4ce57820a41873dc015f4c689a8596d59c55f0077892", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/allocation/ORDER.json": "a4c8f6c96716da0a6d2057373bf3ec3ffb1c7f86bf2b263416dc1c00fee23555", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/retiming-source/prepared/predecessor/PR2969-CLAIM.json": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/retiming-source/prepared/predecessor/adapters/extension_blocknorm.py": "6e6b8683cc87a84e5410c399b1128eb68694f852a3927cb124067f503ed7d7c7", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/retiming-source/prepared/predecessor/helpers/lift_parent.py": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/retiming-source/prepared/predecessor/helpers/reconstruct_replica.py": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/retiming-source/prepared/predecessor/helpers/replica_parent.py": "48bdbf28f59d80edb266803ec61bf5e22e8fb5e5a0e2b88004b6039147589bd4" + }, + "fill_sha256": "4ccbadfabea3a7041783024dc8cd0cc0353d3a18c2286acacef50fe8c3141d8f", + "gain": "3191837508983142627/500000000000000000000000", + "kappa": "17304188997660711638039999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "kappa_decimal": "0.0017304188997660711638039999999999999999999998999999999999999999999999", + "native_receipt_sha256": "3ce3201707762aa08fd0b22200ef662339138022760f289fa94521da9e2aa354", + "order_sha256": "a4c8f6c96716da0a6d2057373bf3ec3ffb1c7f86bf2b263416dc1c00fee23555", + "package_manifest_sha256": "9b839aa7bf05ad0c2609677dfe35f4a317acaffec8813ff3b922fa2c5b7270fd", + "patches": [ + { + "after_sha256": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b", + "before_sha256": "faf283eb4edd2e6a1ccb40b3cb3ba30ae54338eaf5ea0a10d84d11d7939502af", + "path": "new/rebind.py", + "replacements": [ + [ + "physical=spec['expected']['live'] + 8 + R + 2)", + "physical=spec['expected']['live'] + 8 + R + 2 + max(len(rd(d / 'CANONICAL-WORD.json.gz').get('zero_buffers', [])) for d in locs.values()))" + ] + ] + }, + { + "after_sha256": "99bef04f24a99088e5c0c9b8f6bbc8386669d8315b8f572d6bbfb932c5d51145", + "before_sha256": "7edb4732b34e5814b27650a55c938626cb50d68f06397744dd4fe451437e90e0", + "path": "geometry_controls.py", + "replacements": [ + [ + " i['complete_invocation_sweeps']=i['bridge_sweeps']=333", + " i['complete_invocation_sweeps']-=1;i['bridge_sweeps']-=1" + ], + [ + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);oh=digest(o);i['owner_audit_sha256']=oh", + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);assert (o,i)!=(owner,invoice), 'geometry mutant must change actual receipts';oh=digest(o);i['owner_audit_sha256']=oh" + ] + ] + }, + { + "after_sha256": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b", + "before_sha256": "c43680a2da390f79925547a5ee1919d8a76637cccf98e2c8164b6f667fbc3183", + "path": "verify_release.py", + "replacements": [ + [ + "Fraction(1, 10 ** 3046) - Fraction(1, 10 ** 3022)", + "Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 46)) - Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 22))" + ], + [ + "epsilon=1-(1025/1024)e-3080", + "epsilon=1-(1025/1024)e-{spec['outer_refinement']['endpoint_digits']+80}" + ], + [ + "at the one 3000-digit rejection call", + "at the one {spec['outer_refinement']['endpoint_digits']}-digit rejection call" + ] + ] + }, + { + "after_sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "before_sha256": "9e12909c73d3b3a31a45d801ae76c034510d6306400412e474df79bc4f1dc67e", + "path": "outer/check_ledger.py", + "replacements": [ + [ + "assert (m,W)==(73,66304)", + "T=spec['geometry']['replicas']\nassert type(T) is int and T>0\nassert m==73 and W==896*T and W==BJ['live']" + ] + ] + }, + { + "after_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "before_sha256": "08ca58abff11bdfba721dc56ab8acf06ec1b7c48a8699a0955cf35324680aca7", + "path": "code/witness.py", + "replacements": [ + [ + " with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10))", + " import time as _wr_time\n _wr_path=Path(os.environ['WITNESS_RECORD'])\n _wr_lock=_wr_path.with_name(_wr_path.name+'.append.lock')\n _wr_deadline=_wr_time.monotonic()+60\n _wr_fd=None\n while _wr_fd is None:\n try:_wr_fd=os.open(_wr_lock,os.O_CREAT|os.O_EXCL|os.O_WRONLY)\n except FileExistsError:\n if _wr_time.monotonic()>=_wr_deadline:raise TimeoutError('discovery record lock timeout; existing lock preserved')\n _wr_time.sleep(.005)\n try:\n with _wr_path.open('a',encoding='utf-8',newline='\\n')as _wr_out:\n _wr_out.write(json.dumps([key,got],default=str)+chr(10))\n _wr_out.flush()\n finally:\n os.close(_wr_fd)\n _wr_lock.unlink()" + ] + ] + }, + { + "after_sha256": "770d23cb1ac78b485ccc1a26f5d3e2fed7345940f77011579ae90ada4f5cacb1", + "before_sha256": "4b44d5e72e9d677076edc2d20569cdd30f0e21849afd88874d74dfa7d1c767e0", + "path": "verify.py", + "replacements": [ + [ + "run('lift-parent',P/'lift_parent.py','--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')", + "run('lift-parent',P/'lift_parent.py','--package',P,'--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')" + ] + ] + }, + { + "after_sha256": "0d8cc021d2401d047aaec79060ec2ea28ba06f12eca8dbf4c60c78bb31975c4e", + "before_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "path": "code/witness.py", + "replacements": [ + [ + "PAYLOAD==1<<(192+(GEO['dimension']+1)//2+2*CALLS+4).bit_length()", + "PAYLOAD==1<<(128+(GEO['dimension']+1)//2+18+1330+1+4).bit_length()" + ] + ] + }, + { + "after_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "before_sha256": "bb213d0af12218ff7c9c572717e522d8bbeeb2856b87a253f4a7f44e0fd71f15", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4", + " from blocknorm_certificate import certify\n blocknorm=certify(template, {pid:base/'providers'/pid for pid in template['local_providers']})\n assert blocknorm['status'] == 'PASS_TENSOR_BLOCK_NORM_CERTIFICATE'\n assert localbits <= 128, 'actual native scalar/Horner prefix exceeds charged local reserve'\n required_prefix=localbits+input_l2_bits+blocknorm['max_active_depth']+blocknorm['stock_l2_bits']+1+4" + ] + ] + }, + { + "after_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "before_sha256": "02502a217fe8c9e10229075b50745518beac512c48db20e64c3e06514a4da5b5", + "path": "independent_core.py", + "replacements": [ + [ + " payload = 1 << (192 + (M+1)//2 + 2*len(c['order']) + 4).bit_length()", + " require(localbits <= 128, 'measured native prefix exceeds local reserve')\n payload = 1 << (128 + (M+1)//2 + 18 + 1330 + 1 + 4).bit_length()" + ] + ] + }, + { + "after_sha256": "d598a2ac1e2e8eaee14a8c285e0277a7ae44ca6a15bd2b5cfc67fb40844fb387", + "before_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,", + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,blocknorm=blocknorm," + ], + [ + " primitive_arithmetic_margin_bits=4,controller_audit_sha256=", + " tensor_block_norm=blocknorm,partial_cover_margin_bits=1,physical_stock_l2_bits=blocknorm['stock_l2_bits'],primitive_arithmetic_margin_bits=4,controller_audit_sha256=" + ], + [ + "Sum every actual invocation and bridge sweep and take the maximum local scalar/Horner prefix over both orientations of the fixed provider.", + "All invocations and bridge sweeps remain charged. Bound completed-boundary energy by at most eighteen active steps per owner replica, using exact tensor-isomorphic whole-family helper unitaries. Add the full group-indexed physical-stock sup-to-l2 factor and one partial-cover margin, then the maximum local scalar/Horner prefix." + ] + ] + }, + { + "after_sha256": "e051aaa166e01263780d5ae03699690670b597fed6593af4c37a7e978825eb85", + "before_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "path": "independent_core.py", + "replacements": [ + [ + " prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4", + " bn=c['blocknorm']\n require(bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['max_active_depth']==18 and bn['stock_l2_bits']<=1330, 'independent tensor block certificate')\n prefix = localbits + (M + 1) // 2 + bn['max_active_depth'] + bn['stock_l2_bits'] + 1 + 4" + ], + [ + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4)", + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], active_block_depth=18,stock_l2=bn['stock_l2_bits'],partial_cover=1,margin=4),blocknorm=bn" + ] + ] + }, + { + "after_sha256": "393323f150d0bb686419804d51cf43d0f58450d2a1e7929725acdd26fdbb3640", + "before_sha256": "2286f00e462ff28abbb3f396095463482a1e063213b9526a7225275980c77eaf", + "path": "audit_mixed.py", + "replacements": [ + [ + "pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)", + "import blocknorm_certificate as BN;ctx['blocknorm']=BN.certify_context(ctx,roles,dirs,source_parent=parent);pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)" + ] + ] + }, + { + "after_sha256": "0542dde915af8902324db2f59136da078d5256bfaa8f1510f3e59336be7e2680", + "before_sha256": "f25e1e870df5d5a16a1e367b3df8843cb01644ab4b75895d7939af81e4fcb833", + "path": "code/assemble.py", + "replacements": [ + [ + " assert invoice['global_prefix_bits']==max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())+37+CALLS+CALLS+4", + " bn=invoice['blocknorm']\n assert bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['replicas']==REPLICAS\n assert bn['max_active_depth']==bn['boundary_depth_bits']==18 and bn['active_calls_per_block']==bn['bridges_per_block']==9\n assert bn['block_width_families']==896 and bn['physical_families']==invoice['physical'] and bn['live_families']==invoice['live']\n assert bn['partial_cover_bits']==1 and bn['input_l2_bits']==37 and bn['local_reserve_bits']==128 and bn['retained_payload_bits']==PAYLOAD\n localbits=max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())\n assert bn['local_actual_prefix_bits']==localbits and localbits<=128\n assert invoice['global_prefix_bits']==bn['actual_prefix_bits']==localbits+37+18+bn['stock_l2_bits']+1+4\n assert bn['required_reserve_bits']==128+37+18+bn['stock_l2_bits']+1+42 and os.path.ismount(Path(*work.parts[:3])),'actual external volume mount required') + work.mkdir();(work/'tmp').mkdir() + env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONPYCACHEPREFIX=str(work/'pycache'),PYTHONINTMAXSTRDIGITS='0',OPENBLAS_NUM_THREADS='1',OMP_NUM_THREADS='1',TMPDIR=str(work/'tmp'),GIT_NO_REPLACE_OBJECTS='1',GIT_OPTIONAL_LOCKS='0') + for key in ('PYTHONPATH','PYTHONOPTIMIZE','WITNESS_SPEC','WITNESS_RECORD','WITNESS_DISCOVER'):env.pop(key,None) + stages=[];before={p:row['sha256'] for p,row in dependencies['files'].items()} + write(work/'PLAN.json',{'status':'EXPERIMENT_NOT_ADMITTED','started_unix':time.time(),'pid':os.getpid(),'python':sys.version,'platform':platform.platform(),'entrypoint_sha256':sha(Path(__file__)),'dependencies_sha256':sha(HERE/'DEPENDENCIES.json'),'spec_sha256':sha(HERE/'SPEC.json'),'upstreams':dependencies['upstreams'],'comparison_claim_sha256':sha(HERE/'comparator/PR3642-CLAIM.json'),'scope':spec['scope']}) + def run(label,args,extra=None): + cmd=[sys.executable,'-B',*map(str,args)];started=time.time() + write(work/'ACTIVE.json',{'stage':label,'command':cmd,'started_unix':started,'parent_pid':os.getpid()}) + print('START',label,flush=True) + with (work/(label+'.log')).open('w') as log: + child=subprocess.run(cmd,cwd=work,env=dict(env,**(extra or {})),stdin=subprocess.DEVNULL,stdout=log,stderr=subprocess.STDOUT) + stages.append({'stage':label,'command':cmd,'exit_code':child.returncode,'seconds':time.time()-started,'log_sha256':sha(work/(label+'.log'))}) + write(work/'STAGES.json',stages) + need(child.returncode==0,label+' failed; preserved log '+str(work/(label+'.log'))) + print('PASS',label,flush=True) + try: + materialized=work/'materialized' + run('source-materialization',[HERE/'vendor/pr3642/reproduce.py','--repo',repo,'--work',materialized,'--materialize-only']) + src=materialized/'retimed';source=src/'source';old=materialized/'prepared/predecessor';main_files=materialized/'main-files' + manifest=read(source/'MANIFEST.json') + need(sha(source/'MANIFEST.json')==dependencies['source_manifest_sha256'] and len(manifest)==dependencies['source_file_count'],'exact retimed source manifest') + need(all(sha(source/p)==h for p,h in manifest.items()),'complete retimed source payload') + if a.materialize_only: + need(all(sha(HERE/p)==h for p,h in before.items()),'immutable dependencies changed') + write(work/'RESULT.json',{'status':'PASS_T488_COMPOSITION_SOURCE_MATERIALIZATION_ONLY','source_manifest_sha256':sha(source/'MANIFEST.json'),'source_files':len(manifest),'stages':stages,'scope':'Fresh upstream reconstruction and existing source controls. No literal T488 owners, native providers, controller or full release replay.'}) + print('PASS_T488_COMPOSITION_SOURCE_MATERIALIZATION_ONLY');return + allocation=work/'allocation' + run('t488-literal',[HERE/'vendor/pr3633/owners/portable_expand.py','--out',allocation],{'OWNER_SOURCE_REPO':str(main_files)}) + fill=read(allocation/'FILL.json.gz');order=read(allocation/'ORDER.json') + need(fill['columns']==spec['fill_columns'] and len(fill['rows'])==spec['roles'] and len(order)==spec['calls'],'complete literal T488 allocation') + need(not fill.get('dispatch_overrides',[]),'no dispatch overrides') + oldproviders=read(allocation/'PROVIDERS.json');newproviders=read(source/'new/BORROW-PROVIDERS.json') + need(set(oldproviders)==set(newproviders),'provider inventory') + need(all(oldproviders[p]['widths']==newproviders[p]['widths'] for p in oldproviders),'every retained role has identical width') + oldprofile={int(k):v for k,v in read(allocation/'PROFILE.json').items()};profile=dict(oldprofile) + oldlocals=[{int(k):v for k,v in p['actual_paid_profile'].items()} for p in oldproviders.values()] + newlocals=[{int(k):v for k,v in p['actual_paid_profile'].items()} for p in newproviders.values()] + need(all(x==oldlocals[0] for x in oldlocals) and all(x==newlocals[0] for x in newlocals),'both provider profiles agree') + oldlocal,newlocal=oldlocals[0],newlocals[0] + for k in oldlocal.keys()|newlocal.keys():profile[k]=profile.get(k,0)+len(order)*(newlocal.get(k,0)-oldlocal.get(k,0)) + need(profile=={int(k):v for k,v in spec['expected_complete_profile'].items()},'expected full profile derived from actual local bills') + need(sum(k*v for k,v in profile.items())==sum(k*v for k,v in oldprofile.items())==spec['rank_mass_per_replica']*spec['replicas'],'unchanged complete rank mass') + write(work/'EXPECTED-PROFILE.json',{'profile':profile,'oldlocal':oldlocal,'newlocal':newlocal,'calls':len(order),'scope':'Expected only; independent physical admission must reproduce this invoice.'}) + run('fresh-native',[src/'prepare_extension_native.py','--source',source,'--retained-cache',old/'native-cache','--retained-receipt',old/'NATIVE-RECEIPT.json','--out',work/'native','--jobs',a.jobs]) + fill['dispatch_overrides']=[];legacy=work/'FILL-legacy.json.gz';legacy.write_bytes(gzip.compress(json.dumps(fill,separators=(',',':')).encode(),mtime=0));del fill + command=[src/'admit_extension.py'] + paths={'source':source,'fill':legacy,'order':allocation/'ORDER.json','dispatch':allocation/'DISPATCH.json','native-cache':work/'native/native-cache','native-receipt':work/'native/NATIVE-RECEIPT.json','work':work/'admission','replica-helper-dir':old/'helpers','reconstructor':old/'helpers/reconstruct_replica.py','comparison-claim':old/'PR2969-CLAIM.json','blocknorm-checker':old/'adapters/extension_blocknorm.py'} + for key,value in paths.items():command+=['--'+key,value] + command+=['--source-profile','staged3605','--comparison-profile','pr2969','--jobs',a.jobs] + run('complete-admission',command) + result=read(work/'admission/RESULT.json');receipt=work/'admission/release/RELEASE-RECEIPT.json';release=read(receipt) + need(result['status']=='PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE' and result['replicas']==spec['replicas'],'completed exact T488 admission') + need({int(k):v for k,v in result['profile'].items()}==profile,'admitted complete profile') + kappa=Q(result['kappa']);C=Q(result['complex_lower']) + need(kappa==C-Q(spec['outer_margin'])-Q(spec['grid_margin']) and C==Q(spec['expected_complex_lower']) and kappa>prior,'exact modern headline and improvement over pinned PR3642') + need(Q(result['kappa_decimal'])==kappa and release['status']=='PASS_RELEASE' and Q(release['kappa_decimal'])==kappa,'final rational/decimal release agreement') + need(result['release_receipt_sha256']==sha(receipt) and release['manifest_sha256']==result['package_manifest_sha256']==sha(work/'admission/package/MANIFEST.json'),'final scientific receipt/package binding') + need(sha(source/'MANIFEST.json')==dependencies['source_manifest_sha256'] and all(sha(source/p)==h for p,h in manifest.items()),'immutable source drift') + need(all(sha(HERE/p)==h for p,h in before.items()),'immutable vendored input drift') + write(work/'RESULT.json',{'status':'PASS_T488_RETIMER_COMPLETE_CONDITIONAL_RELEASE','kappa':str(kappa),'kappa_decimal':result['kappa_decimal'],'complex_lower':str(C),'prior_PR3642':str(prior),'absolute_gain':str(kappa-prior),'profile':profile,'source_manifest_sha256':sha(source/'MANIFEST.json'),'package_manifest_sha256':release['manifest_sha256'],'release_receipt_sha256':sha(receipt),'native_receipt_sha256':sha(work/'native/NATIVE-RECEIPT.json'),'comparison_claim_sha256':sha(HERE/'comparator/PR3642-CLAIM.json'),'dependencies_sha256':sha(HERE/'DEPENDENCIES.json'),'stages':stages,'scope':spec['scope'],'reuse':'Two current providers freshly replayed. Unchanged predecessor native and parent admission reused only through the unchanged source-bound upstream authentication.'}) + print('PASS_T488_RETIMER_COMPLETE_CONDITIONAL_RELEASE',result['kappa_decimal'],flush=True) + except Exception as exc: + write(work/'RESULT.json',{'status':'FAILED_PRESERVED','error':str(exc),'stages':stages,'scope':'No conditional improvement claimed by this failed run.'}) + raise +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/CREDITS.md b/research/retimed-t488-composition/full-replay/vendor/pr3633/CREDITS.md new file mode 100644 index 0000000000..50f57dcba3 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/CREDITS.md @@ -0,0 +1,9 @@ +# Credits and provenance + +Ross Richardson’s PR3605 supplies the staged-width operators, T37 lineage and integral-network allocation machinery. Our published T530 contribution PR3626 is the comparison baseline. This candidate reuses both the retained T8 chronology, also used in our T450 contribution PR3624, and the retained T16 chronology used in T530. + +The retained T16 chronology originates in PR3413 and is preserved in our PR3457/3465 provider-composition lineage. T16-PROVENANCE.json pins the actual PLAN and reconstruction source. This contribution supplies the combined chronology and newly solved allocation; it does not claim the constituent chronologies or count their prior gains twice. + +Retained machinery preserves its upstream contributor notices and exact sources, including the earlier rank-seven compiler/controller and conditional-release chain. Private optimizer tools are excluded. New material is Apache-2.0, prepared for hexapode with substantial OpenAI Codex assistance. No independent human or formal-kernel acceptance is claimed. + +T488 adds the three-stream chronology and joint allocation, using both exact retained T8 and T16 orders. Historical supplier modifications remain attributed upstream. The ceiling proof is a fixed-model allocation result, not a new operator. diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/ARTIFACTS.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/ARTIFACTS.json new file mode 100644 index 0000000000..77f920d465 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/ARTIFACTS.json @@ -0,0 +1,27 @@ +{ + "T16-DISPATCH.json": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "ORDER37.json": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "T8-DISPATCH.json": "23877abbe8ec258eb1f2425137f9171d37b1a4414a25595abe75eb0738850a24", + "DEPENDENCIES.json": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272", + "integral_network.py": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "EXPECTED.json": "924493b6bbeade055af4916ac7bd6d7d7ec0600719f5c39636dc3f16d7ec14ea", + "SOURCE-PINS.json": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "UPSTREAM-PROOF.md": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd", + "CANDIDATE.json": "fbdda845beac5bba9baa4b1b8c8f596e98f70b59e1d60ebf4f4d3e8758631bfd", + "UPSTREAM-SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "T16-ORDER.json": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "T8-PROVENANCE.json": "65d971ac40b9638fb16a35f9d8889009f038d8a46d46085bcc5aea03ee31fd97", + "test_owner_guards.py": "888ce0e0f27b803c0ce3066d7db73a71f2956bb4c5ef61a826b7df05f35d28ef", + "verify_candidate.py": "0765a1a4ecf42f4a2341c3c3b2e2a371daeebc37c2700364e6ab1fd97b0b12a8", + "portable_expand.py": "e2291ef36067019b26099e4f1d44f7a9a15634f01f7ce0f98569c1c8ccce7e4b", + "source_context.py": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "T16-PROVENANCE.json": "ebc9d5d23d5a698b795deee783c991910d2027cdb2e2f7561854df4189a63621", + "README.txt": "fc248261fa37c2f54da52067090aa2a679668702d5747836f238e1934a71c8be", + "INPUT-PINS.json": "52536cb2643fe04572872820a669c9ee5e6ede435a39c601448e8c14e414fd42", + "T8-ORDER.json": "a1abf78fb3b88bbf4656e6ae26f148a007f744f0be4c00d480fb2424ce8766d6", + "UPSTREAM-SOURCE-CREDITS.md": "5790aad1f07efb375e41e35acd7bb5f7b54c5e6cb21e6c47892be12a44a9ed2c", + "DISPATCH37.json": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "verify_owner.py": "19b4119519f57095362e405191a78375b48c55d90248a4d64aa96d917e2b3138", + "independent_literal.py": "8517c0d6c7cbe73438885135ac7fd9781dd5120113c9721002346dca603f5ed9" +} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/CANDIDATE.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/CANDIDATE.json new file mode 100644 index 0000000000..4293ad4cb7 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/CANDIDATE.json @@ -0,0 +1,42348 @@ +{ + "baseT": 61, + "S": 8, + "order": [ + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 0 + ], + [ + 0, + 5 + ], + [ + 1, + 1 + ], + [ + 0, + 6 + ], + [ + 1, + 2 + ], + [ + 0, + 7 + ], + [ + 1, + 3 + ], + [ + 0, + 8 + ], + [ + 1, + 4 + ], + [ + 0, + 9 + ], + [ + 2, + 0 + ], + [ + 1, + 5 + ], + [ + 0, + 10 + ], + [ + 2, + 1 + ], + [ + 1, + 6 + ], + [ + 0, + 11 + ], + [ + 2, + 2 + ], + [ + 1, + 7 + ], + [ + 0, + 12 + ], + [ + 2, + 3 + ], + [ + 1, + 8 + ], + [ + 0, + 13 + ], + [ + 2, + 4 + ], + [ + 1, + 9 + ], + [ + 3, + 0 + ], + [ + 0, + 14 + ], + [ + 2, + 5 + ], + [ + 1, + 10 + ], + [ + 3, + 1 + ], + [ + 0, + 15 + ], + [ + 2, + 6 + ], + [ + 1, + 11 + ], + [ + 3, + 2 + ], + [ + 0, + 16 + ], + [ + 2, + 7 + ], + [ + 1, + 12 + ], + [ + 3, + 3 + ], + [ + 0, + 17 + ], + [ + 2, + 8 + ], + [ + 1, + 13 + ], + [ + 3, + 4 + ], + [ + 0, + 18 + ], + [ + 2, + 9 + ], + [ + 4, + 0 + ], + [ + 1, + 14 + ], + [ + 3, + 5 + ], + [ + 0, + 19 + ], + [ + 2, + 10 + ], + [ + 4, + 1 + ], + [ + 1, + 15 + ], + [ + 3, + 6 + ], + [ + 0, + 20 + ], + [ + 2, + 11 + ], + [ + 4, + 2 + ], + [ + 1, + 16 + ], + [ + 3, + 7 + ], + [ + 0, + 21 + ], + [ + 2, + 12 + ], + [ + 4, + 3 + ], + [ + 1, + 17 + ], + [ + 3, + 8 + ], + [ + 0, + 22 + ], + [ + 2, + 13 + ], + [ + 4, + 4 + ], + [ + 1, + 18 + ], + [ + 3, + 9 + ], + [ + 0, + 23 + ], + [ + 5, + 0 + ], + [ + 2, + 14 + ], + [ + 4, + 5 + ], + [ + 1, + 19 + ], + [ + 3, + 10 + ], + [ + 0, + 24 + ], + [ + 5, + 1 + ], + [ + 2, + 15 + ], + [ + 4, + 6 + ], + [ + 1, + 20 + ], + [ + 3, + 11 + ], + [ + 0, + 25 + ], + [ + 5, + 2 + ], + [ + 2, + 16 + ], + [ + 4, + 7 + ], + [ + 1, + 21 + ], + [ + 3, + 12 + ], + [ + 0, + 26 + ], + [ + 5, + 3 + ], + [ + 2, + 17 + ], + [ + 4, + 8 + ], + [ + 1, + 22 + ], + [ + 3, + 13 + ], + [ + 0, + 27 + ], + [ + 5, + 4 + ], + [ + 2, + 18 + ], + [ + 4, + 9 + ], + [ + 1, + 23 + ], + [ + 6, + 0 + ], + [ + 3, + 14 + ], + [ + 0, + 28 + ], + [ + 5, + 5 + ], + [ + 2, + 19 + ], + [ + 4, + 10 + ], + [ + 1, + 24 + ], + [ + 6, + 1 + ], + [ + 3, + 15 + ], + [ + 0, + 29 + ], + [ + 5, + 6 + ], + [ + 2, + 20 + ], + [ + 4, + 11 + ], + [ + 1, + 25 + ], + [ + 6, + 2 + ], + [ + 3, + 16 + ], + [ + 0, + 30 + ], + [ + 5, + 7 + ], + [ + 2, + 21 + ], + [ + 4, + 12 + ], + [ + 1, + 26 + ], + [ + 6, + 3 + ], + [ + 3, + 17 + ], + [ + 0, + 31 + ], + [ + 5, + 8 + ], + [ + 2, + 22 + ], + [ + 4, + 13 + ], + [ + 1, + 27 + ], + [ + 6, + 4 + ], + [ + 3, + 18 + ], + [ + 0, + 32 + ], + [ + 5, + 9 + ], + [ + 2, + 23 + ], + [ + 7, + 0 + ], + [ + 4, + 14 + ], + [ + 1, + 28 + ], + [ + 6, + 5 + ], + [ + 3, + 19 + ], + [ + 0, + 33 + ], + [ + 5, + 10 + ], + [ + 2, + 24 + ], + [ + 7, + 1 + ], + [ + 4, + 15 + ], + [ + 1, + 29 + ], + [ + 6, + 6 + ], + [ + 3, + 20 + ], + [ + 0, + 34 + ], + [ + 5, + 11 + ], + [ + 2, + 25 + ], + [ + 7, + 2 + ], + [ + 4, + 16 + ], + [ + 1, + 30 + ], + [ + 6, + 7 + ], + [ + 3, + 21 + ], + [ + 0, + 35 + ], + [ + 5, + 12 + ], + [ + 2, + 26 + ], + [ + 7, + 3 + ], + [ + 4, + 17 + ], + [ + 1, + 31 + ], + [ + 6, + 8 + ], + [ + 3, + 22 + ], + [ + 0, + 36 + ], + [ + 5, + 13 + ], + [ + 2, + 27 + ], + [ + 7, + 4 + ], + [ + 4, + 18 + ], + [ + 1, + 32 + ], + [ + 6, + 9 + ], + [ + 3, + 23 + ], + [ + 8, + 0 + ], + [ + 5, + 14 + ], + [ + 2, + 28 + ], + [ + 7, + 5 + ], + [ + 4, + 19 + ], + [ + 1, + 33 + ], + [ + 6, + 10 + ], + [ + 3, + 24 + ], + [ + 8, + 1 + ], + [ + 5, + 15 + ], + [ + 2, + 29 + ], + [ + 7, + 6 + ], + [ + 4, + 20 + ], + [ + 1, + 34 + ], + [ + 6, + 11 + ], + [ + 3, + 25 + ], + [ + 8, + 2 + ], + [ + 5, + 16 + ], + [ + 2, + 30 + ], + [ + 7, + 7 + ], + [ + 4, + 21 + ], + [ + 1, + 35 + ], + [ + 6, + 12 + ], + [ + 3, + 26 + ], + [ + 8, + 3 + ], + [ + 5, + 17 + ], + [ + 2, + 31 + ], + [ + 7, + 8 + ], + [ + 4, + 22 + ], + [ + 1, + 36 + ], + [ + 6, + 13 + ], + [ + 3, + 27 + ], + [ + 8, + 4 + ], + [ + 5, + 18 + ], + [ + 2, + 32 + ], + [ + 7, + 9 + ], + [ + 4, + 23 + ], + [ + 6, + 14 + ], + [ + 3, + 28 + ], + [ + 8, + 5 + ], + [ + 5, + 19 + ], + [ + 2, + 33 + ], + [ + 7, + 10 + ], + [ + 4, + 24 + ], + [ + 6, + 15 + ], + [ + 3, + 29 + ], + [ + 8, + 6 + ], + [ + 5, + 20 + ], + [ + 2, + 34 + ], + [ + 7, + 11 + ], + [ + 4, + 25 + ], + [ + 6, + 16 + ], + [ + 3, + 30 + ], + [ + 8, + 7 + ], + [ + 5, + 21 + ], + [ + 2, + 35 + ], + [ + 7, + 12 + ], + [ + 4, + 26 + ], + [ + 6, + 17 + ], + [ + 3, + 31 + ], + [ + 8, + 8 + ], + [ + 5, + 22 + ], + [ + 2, + 36 + ], + [ + 7, + 13 + ], + [ + 4, + 27 + ], + [ + 6, + 18 + ], + [ + 3, + 32 + ], + [ + 8, + 9 + ], + [ + 5, + 23 + ], + [ + 7, + 14 + ], + [ + 4, + 28 + ], + [ + 6, + 19 + ], + [ + 3, + 33 + ], + [ + 8, + 10 + ], + [ + 5, + 24 + ], + [ + 7, + 15 + ], + [ + 4, + 29 + ], + [ + 6, + 20 + ], + [ + 3, + 34 + ], + [ + 8, + 11 + ], + [ + 5, + 25 + ], + [ + 7, + 16 + ], + [ + 4, + 30 + ], + [ + 6, + 21 + ], + [ + 3, + 35 + ], + [ + 8, + 12 + ], + [ + 5, + 26 + ], + [ + 7, + 17 + ], + [ + 4, + 31 + ], + [ + 6, + 22 + ], + [ + 3, + 36 + ], + [ + 8, + 13 + ], + [ + 5, + 27 + ], + [ + 7, + 18 + ], + [ + 4, + 32 + ], + [ + 6, + 23 + ], + [ + 8, + 14 + ], + [ + 5, + 28 + ], + [ + 7, + 19 + ], + [ + 4, + 33 + ], + [ + 6, + 24 + ], + [ + 8, + 15 + ], + [ + 5, + 29 + ], + [ + 7, + 20 + ], + [ + 4, + 34 + ], + [ + 6, + 25 + ], + [ + 8, + 16 + ], + [ + 5, + 30 + ], + [ + 7, + 21 + ], + [ + 4, + 35 + ], + [ + 6, + 26 + ], + [ + 8, + 17 + ], + [ + 5, + 31 + ], + [ + 7, + 22 + ], + [ + 4, + 36 + ], + [ + 6, + 27 + ], + [ + 8, + 18 + ], + [ + 5, + 32 + ], + [ + 7, + 23 + ], + [ + 6, + 28 + ], + [ + 8, + 19 + ], + [ + 5, + 33 + ], + [ + 7, + 24 + ], + [ + 6, + 29 + ], + [ + 8, + 20 + ], + [ + 5, + 34 + ], + [ + 7, + 25 + ], + [ + 6, + 30 + ], + [ + 8, + 21 + ], + [ + 5, + 35 + ], + [ + 7, + 26 + ], + [ + 6, + 31 + ], + [ + 8, + 22 + ], + [ + 5, + 36 + ], + [ + 7, + 27 + ], + [ + 6, + 32 + ], + [ + 8, + 23 + ], + [ + 7, + 28 + ], + [ + 6, + 33 + ], + [ + 8, + 24 + ], + [ + 7, + 29 + ], + [ + 6, + 34 + ], + [ + 8, + 25 + ], + [ + 7, + 30 + ], + [ + 6, + 35 + ], + [ + 8, + 26 + ], + [ + 7, + 31 + ], + [ + 6, + 36 + ], + [ + 8, + 27 + ], + [ + 7, + 32 + ], + [ + 8, + 28 + ], + [ + 7, + 33 + ], + [ + 8, + 29 + ], + [ + 7, + 34 + ], + [ + 8, + 30 + ], + [ + 7, + 35 + ], + [ + 8, + 31 + ], + [ + 7, + 36 + ], + [ + 8, + 32 + ], + [ + 8, + 33 + ], + [ + 8, + 34 + ], + [ + 8, + 35 + ], + [ + 8, + 36 + ], + [ + 0, + 37 + ], + [ + 0, + 38 + ], + [ + 1, + 37 + ], + [ + 0, + 39 + ], + [ + 1, + 38 + ], + [ + 2, + 37 + ], + [ + 0, + 40 + ], + [ + 3, + 37 + ], + [ + 1, + 39 + ], + [ + 2, + 38 + ], + [ + 0, + 41 + ], + [ + 2, + 39 + ], + [ + 1, + 40 + ], + [ + 3, + 38 + ], + [ + 4, + 37 + ], + [ + 0, + 42 + ], + [ + 1, + 41 + ], + [ + 2, + 40 + ], + [ + 3, + 39 + ], + [ + 4, + 38 + ], + [ + 5, + 37 + ], + [ + 0, + 43 + ], + [ + 1, + 42 + ], + [ + 2, + 41 + ], + [ + 3, + 40 + ], + [ + 4, + 39 + ], + [ + 5, + 38 + ], + [ + 0, + 44 + ], + [ + 6, + 37 + ], + [ + 1, + 43 + ], + [ + 2, + 42 + ], + [ + 3, + 41 + ], + [ + 4, + 40 + ], + [ + 5, + 39 + ], + [ + 6, + 38 + ], + [ + 1, + 44 + ], + [ + 7, + 37 + ], + [ + 2, + 43 + ], + [ + 3, + 42 + ], + [ + 4, + 41 + ], + [ + 5, + 40 + ], + [ + 6, + 39 + ], + [ + 7, + 38 + ], + [ + 2, + 44 + ], + [ + 8, + 37 + ], + [ + 3, + 43 + ], + [ + 4, + 42 + ], + [ + 5, + 41 + ], + [ + 6, + 40 + ], + [ + 7, + 39 + ], + [ + 8, + 38 + ], + [ + 3, + 44 + ], + [ + 4, + 43 + ], + [ + 5, + 42 + ], + [ + 6, + 41 + ], + [ + 7, + 40 + ], + [ + 8, + 39 + ], + [ + 4, + 44 + ], + [ + 5, + 43 + ], + [ + 6, + 42 + ], + [ + 7, + 41 + ], + [ + 8, + 40 + ], + [ + 5, + 44 + ], + [ + 6, + 43 + ], + [ + 7, + 42 + ], + [ + 8, + 41 + ], + [ + 6, + 44 + ], + [ + 7, + 43 + ], + [ + 8, + 42 + ], + [ + 7, + 44 + ], + [ + 8, + 43 + ], + [ + 8, + 44 + ], + [ + 0, + 45 + ], + [ + 0, + 53 + ], + [ + 0, + 46 + ], + [ + 0, + 54 + ], + [ + 1, + 45 + ], + [ + 1, + 53 + ], + [ + 0, + 47 + ], + [ + 0, + 55 + ], + [ + 1, + 46 + ], + [ + 1, + 54 + ], + [ + 2, + 45 + ], + [ + 2, + 53 + ], + [ + 0, + 48 + ], + [ + 0, + 56 + ], + [ + 1, + 47 + ], + [ + 1, + 55 + ], + [ + 2, + 46 + ], + [ + 2, + 54 + ], + [ + 3, + 45 + ], + [ + 3, + 53 + ], + [ + 0, + 49 + ], + [ + 0, + 57 + ], + [ + 1, + 48 + ], + [ + 1, + 56 + ], + [ + 2, + 47 + ], + [ + 2, + 55 + ], + [ + 3, + 46 + ], + [ + 3, + 54 + ], + [ + 4, + 45 + ], + [ + 4, + 53 + ], + [ + 0, + 50 + ], + [ + 0, + 58 + ], + [ + 1, + 49 + ], + [ + 1, + 57 + ], + [ + 2, + 48 + ], + [ + 2, + 56 + ], + [ + 3, + 47 + ], + [ + 3, + 55 + ], + [ + 4, + 46 + ], + [ + 4, + 54 + ], + [ + 5, + 45 + ], + [ + 5, + 53 + ], + [ + 0, + 51 + ], + [ + 0, + 59 + ], + [ + 1, + 50 + ], + [ + 1, + 58 + ], + [ + 2, + 49 + ], + [ + 2, + 57 + ], + [ + 3, + 48 + ], + [ + 3, + 56 + ], + [ + 4, + 47 + ], + [ + 4, + 55 + ], + [ + 5, + 46 + ], + [ + 5, + 54 + ], + [ + 0, + 52 + ], + [ + 0, + 60 + ], + [ + 6, + 45 + ], + [ + 6, + 53 + ], + [ + 1, + 51 + ], + [ + 1, + 59 + ], + [ + 2, + 50 + ], + [ + 2, + 58 + ], + [ + 3, + 49 + ], + [ + 3, + 57 + ], + [ + 4, + 48 + ], + [ + 4, + 56 + ], + [ + 5, + 47 + ], + [ + 5, + 55 + ], + [ + 6, + 46 + ], + [ + 6, + 54 + ], + [ + 1, + 52 + ], + [ + 1, + 60 + ], + [ + 7, + 45 + ], + [ + 7, + 53 + ], + [ + 2, + 51 + ], + [ + 2, + 59 + ], + [ + 3, + 50 + ], + [ + 3, + 58 + ], + [ + 4, + 49 + ], + [ + 4, + 57 + ], + [ + 5, + 48 + ], + [ + 5, + 56 + ], + [ + 6, + 47 + ], + [ + 6, + 55 + ], + [ + 7, + 46 + ], + [ + 7, + 54 + ], + [ + 2, + 52 + ], + [ + 2, + 60 + ], + [ + 8, + 45 + ], + [ + 8, + 53 + ], + [ + 3, + 51 + ], + [ + 3, + 59 + ], + [ + 4, + 50 + ], + [ + 4, + 58 + ], + [ + 5, + 49 + ], + [ + 5, + 57 + ], + [ + 6, + 48 + ], + [ + 6, + 56 + ], + [ + 7, + 47 + ], + [ + 7, + 55 + ], + [ + 8, + 46 + ], + [ + 8, + 54 + ], + [ + 3, + 52 + ], + [ + 3, + 60 + ], + [ + 4, + 51 + ], + [ + 4, + 59 + ], + [ + 5, + 50 + ], + [ + 5, + 58 + ], + [ + 6, + 49 + ], + [ + 6, + 57 + ], + [ + 7, + 48 + ], + [ + 7, + 56 + ], + [ + 8, + 47 + ], + [ + 8, + 55 + ], + [ + 4, + 52 + ], + [ + 4, + 60 + ], + [ + 5, + 51 + ], + [ + 5, + 59 + ], + [ + 6, + 50 + ], + [ + 6, + 58 + ], + [ + 7, + 49 + ], + [ + 7, + 57 + ], + [ + 8, + 48 + ], + [ + 8, + 56 + ], + [ + 5, + 52 + ], + [ + 5, + 60 + ], + [ + 6, + 51 + ], + [ + 6, + 59 + ], + [ + 7, + 50 + ], + [ + 7, + 58 + ], + [ + 8, + 49 + ], + [ + 8, + 57 + ], + [ + 6, + 52 + ], + [ + 6, + 60 + ], + [ + 7, + 51 + ], + [ + 7, + 59 + ], + [ + 8, + 50 + ], + [ + 8, + 58 + ], + [ + 7, + 52 + ], + [ + 7, + 60 + ], + [ + 8, + 51 + ], + [ + 8, + 59 + ], + [ + 8, + 52 + ], + [ + 8, + 60 + ] + ], + "dispatch": [ + [ + 0, + 0, + "extra" + ], + [ + 0, + 1, + "extra" + ], + [ + 0, + 2, + "extra" + ], + [ + 0, + 3, + "extra" + ], + [ + 0, + 4, + "extra" + ], + [ + 1, + 0, + "extra" + ], + [ + 0, + 5, + "extra" + ], + [ + 1, + 1, + "extra" + ], + [ + 0, + 6, + "extra" + ], + [ + 1, + 2, + "extra" + ], + [ + 0, + 7, + "extra" + ], + [ + 1, + 3, + "extra" + ], + [ + 0, + 8, + "extra" + ], + [ + 1, + 4, + "extra" + ], + [ + 0, + 9, + "extra" + ], + [ + 2, + 0, + "extra" + ], + [ + 1, + 5, + "extra" + ], + [ + 0, + 10, + "extra" + ], + [ + 2, + 1, + "extra" + ], + [ + 1, + 6, + "extra" + ], + [ + 0, + 11, + "extra" + ], + [ + 2, + 2, + "extra" + ], + [ + 1, + 7, + "extra" + ], + [ + 0, + 12, + "extra" + ], + [ + 2, + 3, + "extra" + ], + [ + 1, + 8, + "extra" + ], + [ + 0, + 13, + "extra" + ], + [ + 2, + 4, + "extra" + ], + [ + 1, + 9, + "extra" + ], + [ + 3, + 0, + "extra" + ], + [ + 0, + 14, + "extra" + ], + [ + 2, + 5, + "extra" + ], + [ + 1, + 10, + "extra" + ], + [ + 3, + 1, + "extra" + ], + [ + 0, + 15, + "extra" + ], + [ + 2, + 6, + "extra" + ], + [ + 1, + 11, + "extra" + ], + [ + 3, + 2, + "extra" + ], + [ + 0, + 16, + "extra" + ], + [ + 2, + 7, + "extra" + ], + [ + 1, + 12, + "extra" + ], + [ + 3, + 3, + "extra" + ], + [ + 0, + 17, + "extra" + ], + [ + 2, + 8, + "extra" + ], + [ + 1, + 13, + "extra" + ], + [ + 3, + 4, + "extra" + ], + [ + 0, + 18, + "extra" + ], + [ + 2, + 9, + "extra" + ], + [ + 4, + 0, + "extra" + ], + [ + 1, + 14, + "extra" + ], + [ + 3, + 5, + "extra" + ], + [ + 0, + 19, + "extra" + ], + [ + 2, + 10, + "extra" + ], + [ + 4, + 1, + "extra" + ], + [ + 1, + 15, + "extra" + ], + [ + 3, + 6, + "extra" + ], + [ + 0, + 20, + "extra" + ], + [ + 2, + 11, + "extra" + ], + [ + 4, + 2, + "extra" + ], + [ + 1, + 16, + "extra" + ], + [ + 3, + 7, + "extra" + ], + [ + 0, + 21, + "extra" + ], + [ + 2, + 12, + "extra" + ], + [ + 4, + 3, + "extra" + ], + [ + 1, + 17, + "extra" + ], + [ + 3, + 8, + "extra" + ], + [ + 0, + 22, + "extra" + ], + [ + 2, + 13, + "extra" + ], + [ + 4, + 4, + "extra" + ], + [ + 1, + 18, + "extra" + ], + [ + 3, + 9, + "extra" + ], + [ + 0, + 23, + "extra" + ], + [ + 5, + 0, + "extra" + ], + [ + 2, + 14, + "extra" + ], + [ + 4, + 5, + "extra" + ], + [ + 1, + 19, + "extra" + ], + [ + 3, + 10, + "extra" + ], + [ + 0, + 24, + "extra" + ], + [ + 5, + 1, + "extra" + ], + [ + 2, + 15, + "extra" + ], + [ + 4, + 6, + "extra" + ], + [ + 1, + 20, + "extra" + ], + [ + 3, + 11, + "extra" + ], + [ + 0, + 25, + "extra" + ], + [ + 5, + 2, + "extra" + ], + [ + 2, + 16, + "extra" + ], + [ + 4, + 7, + "extra" + ], + [ + 1, + 21, + "extra" + ], + [ + 3, + 12, + "extra" + ], + [ + 0, + 26, + "extra" + ], + [ + 5, + 3, + "extra" + ], + [ + 2, + 17, + "extra" + ], + [ + 4, + 8, + "extra" + ], + [ + 1, + 22, + "extra" + ], + [ + 3, + 13, + "extra" + ], + [ + 0, + 27, + "extra" + ], + [ + 5, + 4, + "extra" + ], + [ + 2, + 18, + "extra" + ], + [ + 4, + 9, + "extra" + ], + [ + 1, + 23, + "extra" + ], + [ + 6, + 0, + "extra" + ], + [ + 3, + 14, + "extra" + ], + [ + 0, + 28, + "extra" + ], + [ + 5, + 5, + "extra" + ], + [ + 2, + 19, + "extra" + ], + [ + 4, + 10, + "extra" + ], + [ + 1, + 24, + "extra" + ], + [ + 6, + 1, + "extra" + ], + [ + 3, + 15, + "extra" + ], + [ + 0, + 29, + "extra" + ], + [ + 5, + 6, + "extra" + ], + [ + 2, + 20, + "extra" + ], + [ + 4, + 11, + "extra" + ], + [ + 1, + 25, + "extra" + ], + [ + 6, + 2, + "extra" + ], + [ + 3, + 16, + "extra" + ], + [ + 0, + 30, + "extra" + ], + [ + 5, + 7, + "extra" + ], + [ + 2, + 21, + "extra" + ], + [ + 4, + 12, + "extra" + ], + [ + 1, + 26, + "extra" + ], + [ + 6, + 3, + "extra" + ], + [ + 3, + 17, + "extra" + ], + [ + 0, + 31, + "extra" + ], + [ + 5, + 8, + "extra" + ], + [ + 2, + 22, + "extra" + ], + [ + 4, + 13, + "extra" + ], + [ + 1, + 27, + "extra" + ], + [ + 6, + 4, + "extra" + ], + [ + 3, + 18, + "extra" + ], + [ + 0, + 32, + "extra" + ], + [ + 5, + 9, + "extra" + ], + [ + 2, + 23, + "extra" + ], + [ + 7, + 0, + "extra" + ], + [ + 4, + 14, + "extra" + ], + [ + 1, + 28, + "extra" + ], + [ + 6, + 5, + "extra" + ], + [ + 3, + 19, + "extra" + ], + [ + 0, + 33, + "extra" + ], + [ + 5, + 10, + "extra" + ], + [ + 2, + 24, + "extra" + ], + [ + 7, + 1, + "extra" + ], + [ + 4, + 15, + "extra" + ], + [ + 1, + 29, + "extra" + ], + [ + 6, + 6, + "extra" + ], + [ + 3, + 20, + "extra" + ], + [ + 0, + 34, + "extra" + ], + [ + 5, + 11, + "extra" + ], + [ + 2, + 25, + "extra" + ], + [ + 7, + 2, + "extra" + ], + [ + 4, + 16, + "extra" + ], + [ + 1, + 30, + "extra" + ], + [ + 6, + 7, + "extra" + ], + [ + 3, + 21, + "extra" + ], + [ + 0, + 35, + "extra" + ], + [ + 5, + 12, + "extra" + ], + [ + 2, + 26, + "extra" + ], + [ + 7, + 3, + "extra" + ], + [ + 4, + 17, + "extra" + ], + [ + 1, + 31, + "extra" + ], + [ + 6, + 8, + "extra" + ], + [ + 3, + 22, + "extra" + ], + [ + 0, + 36, + "extra" + ], + [ + 5, + 13, + "extra" + ], + [ + 2, + 27, + "extra" + ], + [ + 7, + 4, + "extra" + ], + [ + 4, + 18, + "extra" + ], + [ + 1, + 32, + "extra" + ], + [ + 6, + 9, + "extra" + ], + [ + 3, + 23, + "extra" + ], + [ + 8, + 0, + "extra" + ], + [ + 5, + 14, + "extra" + ], + [ + 2, + 28, + "extra" + ], + [ + 7, + 5, + "extra" + ], + [ + 4, + 19, + "extra" + ], + [ + 1, + 33, + "extra" + ], + [ + 6, + 10, + "extra" + ], + [ + 3, + 24, + "extra" + ], + [ + 8, + 1, + "extra" + ], + [ + 5, + 15, + "extra" + ], + [ + 2, + 29, + "extra" + ], + [ + 7, + 6, + "extra" + ], + [ + 4, + 20, + "extra" + ], + [ + 1, + 34, + "extra" + ], + [ + 6, + 11, + "extra" + ], + [ + 3, + 25, + "extra" + ], + [ + 8, + 2, + "extra" + ], + [ + 5, + 16, + "extra" + ], + [ + 2, + 30, + "extra" + ], + [ + 7, + 7, + "extra" + ], + [ + 4, + 21, + "extra" + ], + [ + 1, + 35, + "extra" + ], + [ + 6, + 12, + "extra" + ], + [ + 3, + 26, + "extra" + ], + [ + 8, + 3, + "extra" + ], + [ + 5, + 17, + "extra" + ], + [ + 2, + 31, + "extra" + ], + [ + 7, + 8, + "extra" + ], + [ + 4, + 22, + "extra" + ], + [ + 1, + 36, + "extra" + ], + [ + 6, + 13, + "extra" + ], + [ + 3, + 27, + "extra" + ], + [ + 8, + 4, + "extra" + ], + [ + 5, + 18, + "extra" + ], + [ + 2, + 32, + "extra" + ], + [ + 7, + 9, + "extra" + ], + [ + 4, + 23, + "extra" + ], + [ + 6, + 14, + "extra" + ], + [ + 3, + 28, + "gauge44" + ], + [ + 8, + 5, + "gauge44" + ], + [ + 5, + 19, + "gauge44" + ], + [ + 2, + 33, + "gauge44" + ], + [ + 7, + 10, + "gauge44" + ], + [ + 4, + 24, + "gauge44" + ], + [ + 6, + 15, + "gauge44" + ], + [ + 3, + 29, + "gauge44" + ], + [ + 8, + 6, + "gauge44" + ], + [ + 5, + 20, + "gauge44" + ], + [ + 2, + 34, + "gauge44" + ], + [ + 7, + 11, + "gauge44" + ], + [ + 4, + 25, + "gauge44" + ], + [ + 6, + 16, + "gauge44" + ], + [ + 3, + 30, + "gauge44" + ], + [ + 8, + 7, + "gauge44" + ], + [ + 5, + 21, + "gauge44" + ], + [ + 2, + 35, + "gauge44" + ], + [ + 7, + 12, + "gauge44" + ], + [ + 4, + 26, + "gauge44" + ], + [ + 6, + 17, + "gauge44" + ], + [ + 3, + 31, + "gauge44" + ], + [ + 8, + 8, + "gauge44" + ], + [ + 5, + 22, + "gauge44" + ], + [ + 2, + 36, + "gauge44" + ], + [ + 7, + 13, + "gauge44" + ], + [ + 4, + 27, + "gauge44" + ], + [ + 6, + 18, + "gauge44" + ], + [ + 3, + 32, + "gauge44" + ], + [ + 8, + 9, + "gauge44" + ], + [ + 5, + 23, + "gauge44" + ], + [ + 7, + 14, + "gauge44" + ], + [ + 4, + 28, + "gauge44" + ], + [ + 6, + 19, + "gauge44" + ], + [ + 3, + 33, + "gauge44" + ], + [ + 8, + 10, + "gauge44" + ], + [ + 5, + 24, + "gauge44" + ], + [ + 7, + 15, + "gauge44" + ], + [ + 4, + 29, + "gauge44" + ], + [ + 6, + 20, + "gauge44" + ], + [ + 3, + 34, + "gauge44" + ], + [ + 8, + 11, + "gauge44" + ], + [ + 5, + 25, + "gauge44" + ], + [ + 7, + 16, + "gauge44" + ], + [ + 4, + 30, + "gauge44" + ], + [ + 6, + 21, + "gauge44" + ], + [ + 3, + 35, + "gauge44" + ], + [ + 8, + 12, + "gauge44" + ], + [ + 5, + 26, + "gauge44" + ], + [ + 7, + 17, + "gauge44" + ], + [ + 4, + 31, + "gauge44" + ], + [ + 6, + 22, + "gauge44" + ], + [ + 3, + 36, + "gauge44" + ], + [ + 8, + 13, + "gauge44" + ], + [ + 5, + 27, + "gauge44" + ], + [ + 7, + 18, + "gauge44" + ], + [ + 4, + 32, + "gauge44" + ], + [ + 6, + 23, + "gauge44" + ], + [ + 8, + 14, + "gauge44" + ], + [ + 5, + 28, + "gauge44" + ], + [ + 7, + 19, + "gauge44" + ], + [ + 4, + 33, + "gauge44" + ], + [ + 6, + 24, + "gauge44" + ], + [ + 8, + 15, + "gauge44" + ], + [ + 5, + 29, + "gauge44" + ], + [ + 7, + 20, + "gauge44" + ], + [ + 4, + 34, + "gauge44" + ], + [ + 6, + 25, + "gauge44" + ], + [ + 8, + 16, + "gauge44" + ], + [ + 5, + 30, + "gauge44" + ], + [ + 7, + 21, + "gauge44" + ], + [ + 4, + 35, + "gauge44" + ], + [ + 6, + 26, + "gauge44" + ], + [ + 8, + 17, + "gauge44" + ], + [ + 5, + 31, + "gauge44" + ], + [ + 7, + 22, + "gauge44" + ], + [ + 4, + 36, + "gauge44" + ], + [ + 6, + 27, + "gauge44" + ], + [ + 8, + 18, + "gauge44" + ], + [ + 5, + 32, + "gauge44" + ], + [ + 7, + 23, + "gauge44" + ], + [ + 6, + 28, + "gauge44" + ], + [ + 8, + 19, + "gauge44" + ], + [ + 5, + 33, + "gauge44" + ], + [ + 7, + 24, + "gauge44" + ], + [ + 6, + 29, + "gauge44" + ], + [ + 8, + 20, + "gauge44" + ], + [ + 5, + 34, + "gauge44" + ], + [ + 7, + 25, + "gauge44" + ], + [ + 6, + 30, + "gauge44" + ], + [ + 8, + 21, + "gauge44" + ], + [ + 5, + 35, + "gauge44" + ], + [ + 7, + 26, + "gauge44" + ], + [ + 6, + 31, + "gauge44" + ], + [ + 8, + 22, + "gauge44" + ], + [ + 5, + 36, + "gauge44" + ], + [ + 7, + 27, + "gauge44" + ], + [ + 6, + 32, + "gauge44" + ], + [ + 8, + 23, + "gauge44" + ], + [ + 7, + 28, + "gauge44" + ], + [ + 6, + 33, + "gauge44" + ], + [ + 8, + 24, + "gauge44" + ], + [ + 7, + 29, + "gauge44" + ], + [ + 6, + 34, + "gauge44" + ], + [ + 8, + 25, + "gauge44" + ], + [ + 7, + 30, + "gauge44" + ], + [ + 6, + 35, + "gauge44" + ], + [ + 8, + 26, + "gauge44" + ], + [ + 7, + 31, + "gauge44" + ], + [ + 6, + 36, + "gauge44" + ], + [ + 8, + 27, + "gauge44" + ], + [ + 7, + 32, + "gauge44" + ], + [ + 8, + 28, + "gauge44" + ], + [ + 7, + 33, + "gauge44" + ], + [ + 8, + 29, + "gauge44" + ], + [ + 7, + 34, + "gauge44" + ], + [ + 8, + 30, + "gauge44" + ], + [ + 7, + 35, + "gauge44" + ], + [ + 8, + 31, + "gauge44" + ], + [ + 7, + 36, + "gauge44" + ], + [ + 8, + 32, + "gauge44" + ], + [ + 8, + 33, + "gauge44" + ], + [ + 8, + 34, + "gauge44" + ], + [ + 8, + 35, + "gauge44" + ], + [ + 8, + 36, + "gauge44" + ], + [ + 0, + 37, + "extra" + ], + [ + 0, + 38, + "gauge44" + ], + [ + 1, + 37, + "gauge44" + ], + [ + 0, + 39, + "gauge44" + ], + [ + 1, + 38, + "gauge44" + ], + [ + 2, + 37, + "gauge44" + ], + [ + 0, + 40, + "gauge44" + ], + [ + 3, + 37, + "gauge44" + ], + [ + 1, + 39, + "gauge44" + ], + [ + 2, + 38, + "gauge44" + ], + [ + 0, + 41, + "gauge44" + ], + [ + 2, + 39, + "gauge44" + ], + [ + 1, + 40, + "gauge44" + ], + [ + 3, + 38, + "gauge44" + ], + [ + 4, + 37, + "gauge44" + ], + [ + 0, + 42, + "gauge44" + ], + [ + 1, + 41, + "gauge44" + ], + [ + 2, + 40, + "gauge44" + ], + [ + 3, + 39, + "gauge44" + ], + [ + 4, + 38, + "gauge44" + ], + [ + 5, + 37, + "gauge44" + ], + [ + 0, + 43, + "gauge44" + ], + [ + 1, + 42, + "gauge44" + ], + [ + 2, + 41, + "gauge44" + ], + [ + 3, + 40, + "gauge44" + ], + [ + 4, + 39, + "gauge44" + ], + [ + 5, + 38, + "gauge44" + ], + [ + 0, + 44, + "gauge44" + ], + [ + 6, + 37, + "gauge44" + ], + [ + 1, + 43, + "gauge44" + ], + [ + 2, + 42, + "gauge44" + ], + [ + 3, + 41, + "gauge44" + ], + [ + 4, + 40, + "gauge44" + ], + [ + 5, + 39, + "gauge44" + ], + [ + 6, + 38, + "gauge44" + ], + [ + 1, + 44, + "gauge44" + ], + [ + 7, + 37, + "gauge44" + ], + [ + 2, + 43, + "gauge44" + ], + [ + 3, + 42, + "gauge44" + ], + [ + 4, + 41, + "gauge44" + ], + [ + 5, + 40, + "gauge44" + ], + [ + 6, + 39, + "gauge44" + ], + [ + 7, + 38, + "gauge44" + ], + [ + 2, + 44, + "gauge44" + ], + [ + 8, + 37, + "gauge44" + ], + [ + 3, + 43, + "gauge44" + ], + [ + 4, + 42, + "gauge44" + ], + [ + 5, + 41, + "gauge44" + ], + [ + 6, + 40, + "gauge44" + ], + [ + 7, + 39, + "gauge44" + ], + [ + 8, + 38, + "gauge44" + ], + [ + 3, + 44, + "gauge44" + ], + [ + 4, + 43, + "gauge44" + ], + [ + 5, + 42, + "gauge44" + ], + [ + 6, + 41, + "gauge44" + ], + [ + 7, + 40, + "gauge44" + ], + [ + 8, + 39, + "gauge44" + ], + [ + 4, + 44, + "gauge44" + ], + [ + 5, + 43, + "gauge44" + ], + [ + 6, + 42, + "gauge44" + ], + [ + 7, + 41, + "gauge44" + ], + [ + 8, + 40, + "gauge44" + ], + [ + 5, + 44, + "gauge44" + ], + [ + 6, + 43, + "gauge44" + ], + [ + 7, + 42, + "gauge44" + ], + [ + 8, + 41, + "gauge44" + ], + [ + 6, + 44, + "gauge44" + ], + [ + 7, + 43, + "gauge44" + ], + [ + 8, + 42, + "gauge44" + ], + [ + 7, + 44, + "gauge44" + ], + [ + 8, + 43, + "gauge44" + ], + [ + 8, + 44, + "gauge44" + ], + [ + 0, + 45, + "extra" + ], + [ + 0, + 53, + "gauge44" + ], + [ + 0, + 46, + "gauge44" + ], + [ + 0, + 54, + "gauge44" + ], + [ + 1, + 45, + "gauge44" + ], + [ + 1, + 53, + "gauge44" + ], + [ + 0, + 47, + "gauge44" + ], + [ + 0, + 55, + "gauge44" + ], + [ + 1, + 46, + "gauge44" + ], + [ + 1, + 54, + "gauge44" + ], + [ + 2, + 45, + "gauge44" + ], + [ + 2, + 53, + "gauge44" + ], + [ + 0, + 48, + "gauge44" + ], + [ + 0, + 56, + "gauge44" + ], + [ + 1, + 47, + "gauge44" + ], + [ + 1, + 55, + "gauge44" + ], + [ + 2, + 46, + "gauge44" + ], + [ + 2, + 54, + "gauge44" + ], + [ + 3, + 45, + "gauge44" + ], + [ + 3, + 53, + "gauge44" + ], + [ + 0, + 49, + "gauge44" + ], + [ + 0, + 57, + "gauge44" + ], + [ + 1, + 48, + "gauge44" + ], + [ + 1, + 56, + "gauge44" + ], + [ + 2, + 47, + "gauge44" + ], + [ + 2, + 55, + "gauge44" + ], + [ + 3, + 46, + "gauge44" + ], + [ + 3, + 54, + "gauge44" + ], + [ + 4, + 45, + "gauge44" + ], + [ + 4, + 53, + "gauge44" + ], + [ + 0, + 50, + "gauge44" + ], + [ + 0, + 58, + "gauge44" + ], + [ + 1, + 49, + "gauge44" + ], + [ + 1, + 57, + "gauge44" + ], + [ + 2, + 48, + "gauge44" + ], + [ + 2, + 56, + "gauge44" + ], + [ + 3, + 47, + "gauge44" + ], + [ + 3, + 55, + "gauge44" + ], + [ + 4, + 46, + "gauge44" + ], + [ + 4, + 54, + "gauge44" + ], + [ + 5, + 45, + "gauge44" + ], + [ + 5, + 53, + "gauge44" + ], + [ + 0, + 51, + "gauge44" + ], + [ + 0, + 59, + "gauge44" + ], + [ + 1, + 50, + "gauge44" + ], + [ + 1, + 58, + "gauge44" + ], + [ + 2, + 49, + "gauge44" + ], + [ + 2, + 57, + "gauge44" + ], + [ + 3, + 48, + "gauge44" + ], + [ + 3, + 56, + "gauge44" + ], + [ + 4, + 47, + "gauge44" + ], + [ + 4, + 55, + "gauge44" + ], + [ + 5, + 46, + "gauge44" + ], + [ + 5, + 54, + "gauge44" + ], + [ + 0, + 52, + "gauge44" + ], + [ + 0, + 60, + "gauge44" + ], + [ + 6, + 45, + "gauge44" + ], + [ + 6, + 53, + "gauge44" + ], + [ + 1, + 51, + "gauge44" + ], + [ + 1, + 59, + "gauge44" + ], + [ + 2, + 50, + "gauge44" + ], + [ + 2, + 58, + "gauge44" + ], + [ + 3, + 49, + "gauge44" + ], + [ + 3, + 57, + "gauge44" + ], + [ + 4, + 48, + "gauge44" + ], + [ + 4, + 56, + "gauge44" + ], + [ + 5, + 47, + "gauge44" + ], + [ + 5, + 55, + "gauge44" + ], + [ + 6, + 46, + "gauge44" + ], + [ + 6, + 54, + "gauge44" + ], + [ + 1, + 52, + "gauge44" + ], + [ + 1, + 60, + "gauge44" + ], + [ + 7, + 45, + "gauge44" + ], + [ + 7, + 53, + "gauge44" + ], + [ + 2, + 51, + "gauge44" + ], + [ + 2, + 59, + "gauge44" + ], + [ + 3, + 50, + "gauge44" + ], + [ + 3, + 58, + "gauge44" + ], + [ + 4, + 49, + "gauge44" + ], + [ + 4, + 57, + "gauge44" + ], + [ + 5, + 48, + "gauge44" + ], + [ + 5, + 56, + "gauge44" + ], + [ + 6, + 47, + "gauge44" + ], + [ + 6, + 55, + "gauge44" + ], + [ + 7, + 46, + "gauge44" + ], + [ + 7, + 54, + "gauge44" + ], + [ + 2, + 52, + "gauge44" + ], + [ + 2, + 60, + "gauge44" + ], + [ + 8, + 45, + "gauge44" + ], + [ + 8, + 53, + "gauge44" + ], + [ + 3, + 51, + "gauge44" + ], + [ + 3, + 59, + "gauge44" + ], + [ + 4, + 50, + "gauge44" + ], + [ + 4, + 58, + "gauge44" + ], + [ + 5, + 49, + "gauge44" + ], + [ + 5, + 57, + "gauge44" + ], + [ + 6, + 48, + "gauge44" + ], + [ + 6, + 56, + "gauge44" + ], + [ + 7, + 47, + "gauge44" + ], + [ + 7, + 55, + "gauge44" + ], + [ + 8, + 46, + "gauge44" + ], + [ + 8, + 54, + "gauge44" + ], + [ + 3, + 52, + "gauge44" + ], + [ + 3, + 60, + "gauge44" + ], + [ + 4, + 51, + "gauge44" + ], + [ + 4, + 59, + "gauge44" + ], + [ + 5, + 50, + "gauge44" + ], + [ + 5, + 58, + "gauge44" + ], + [ + 6, + 49, + "gauge44" + ], + [ + 6, + 57, + "gauge44" + ], + [ + 7, + 48, + "gauge44" + ], + [ + 7, + 56, + "gauge44" + ], + [ + 8, + 47, + "gauge44" + ], + [ + 8, + 55, + "gauge44" + ], + [ + 4, + 52, + "gauge44" + ], + [ + 4, + 60, + "gauge44" + ], + [ + 5, + 51, + "gauge44" + ], + [ + 5, + 59, + "gauge44" + ], + [ + 6, + 50, + "gauge44" + ], + [ + 6, + 58, + "gauge44" + ], + [ + 7, + 49, + "gauge44" + ], + [ + 7, + 57, + "gauge44" + ], + [ + 8, + 48, + "gauge44" + ], + [ + 8, + 56, + "gauge44" + ], + [ + 5, + 52, + "gauge44" + ], + [ + 5, + 60, + "gauge44" + ], + [ + 6, + 51, + "gauge44" + ], + [ + 6, + 59, + "gauge44" + ], + [ + 7, + 50, + "gauge44" + ], + [ + 7, + 58, + "gauge44" + ], + [ + 8, + 49, + "gauge44" + ], + [ + 8, + 57, + "gauge44" + ], + [ + 6, + 52, + "gauge44" + ], + [ + 6, + 60, + "gauge44" + ], + [ + 7, + 51, + "gauge44" + ], + [ + 7, + 59, + "gauge44" + ], + [ + 8, + 50, + "gauge44" + ], + [ + 8, + 58, + "gauge44" + ], + [ + 7, + 52, + "gauge44" + ], + [ + 7, + 60, + "gauge44" + ], + [ + 8, + 51, + "gauge44" + ], + [ + 8, + 59, + "gauge44" + ], + [ + 8, + 52, + "gauge44" + ], + [ + 8, + 60, + "gauge44" + ] + ], + "groups": [ + [ + 8, + 5, + 15, + 224 + ], + [ + 8, + 7, + 18, + 224 + ], + [ + 8, + 9, + 21, + 224 + ], + [ + 8, + 11, + 24, + 224 + ], + [ + 8, + 13, + 27, + 224 + ], + [ + 8, + 16, + 31, + 224 + ], + [ + 8, + 19, + 35, + 224 + ], + [ + 8, + 22, + 39, + 224 + ], + [ + 8, + 25, + 43, + 224 + ], + [ + 8, + 28, + 47, + 224 + ], + [ + 8, + 29, + 48, + 224 + ], + [ + 8, + 32, + 52, + 224 + ], + [ + 8, + 33, + 53, + 224 + ], + [ + 8, + 36, + 57, + 224 + ], + [ + 8, + 37, + 58, + 224 + ], + [ + 8, + 40, + 62, + 224 + ], + [ + 8, + 41, + 63, + 224 + ], + [ + 8, + 44, + 67, + 224 + ], + [ + 8, + 45, + 68, + 224 + ], + [ + 8, + 49, + 73, + 224 + ], + [ + 8, + 50, + 74, + 224 + ], + [ + 8, + 54, + 79, + 224 + ], + [ + 8, + 55, + 80, + 224 + ], + [ + 8, + 59, + 85, + 224 + ], + [ + 8, + 60, + 86, + 224 + ], + [ + 8, + 64, + 91, + 224 + ], + [ + 8, + 65, + 92, + 224 + ], + [ + 8, + 69, + 97, + 224 + ], + [ + 8, + 70, + 98, + 224 + ], + [ + 8, + 72, + 100, + 224 + ], + [ + 8, + 75, + 104, + 224 + ], + [ + 8, + 76, + 105, + 224 + ], + [ + 8, + 78, + 107, + 224 + ], + [ + 8, + 81, + 111, + 224 + ], + [ + 8, + 82, + 112, + 224 + ], + [ + 8, + 84, + 114, + 224 + ], + [ + 8, + 87, + 118, + 224 + ], + [ + 8, + 88, + 119, + 224 + ], + [ + 8, + 90, + 121, + 224 + ], + [ + 8, + 93, + 125, + 224 + ], + [ + 8, + 94, + 126, + 224 + ], + [ + 8, + 96, + 128, + 224 + ], + [ + 8, + 99, + 132, + 224 + ], + [ + 8, + 101, + 134, + 224 + ], + [ + 8, + 103, + 136, + 224 + ], + [ + 8, + 106, + 140, + 224 + ], + [ + 8, + 108, + 142, + 224 + ], + [ + 8, + 110, + 144, + 224 + ], + [ + 8, + 113, + 148, + 224 + ], + [ + 8, + 115, + 150, + 224 + ], + [ + 8, + 117, + 152, + 224 + ], + [ + 8, + 120, + 156, + 224 + ], + [ + 8, + 122, + 158, + 224 + ], + [ + 8, + 124, + 160, + 224 + ], + [ + 8, + 127, + 164, + 224 + ], + [ + 8, + 129, + 166, + 224 + ], + [ + 8, + 131, + 168, + 224 + ], + [ + 8, + 135, + 172, + 224 + ], + [ + 8, + 137, + 174, + 224 + ], + [ + 8, + 139, + 176, + 224 + ], + [ + 8, + 143, + 180, + 224 + ], + [ + 8, + 145, + 182, + 224 + ], + [ + 8, + 147, + 184, + 224 + ], + [ + 8, + 151, + 188, + 224 + ], + [ + 8, + 153, + 190, + 224 + ], + [ + 8, + 155, + 192, + 224 + ], + [ + 8, + 159, + 196, + 224 + ], + [ + 8, + 161, + 198, + 224 + ], + [ + 8, + 163, + 200, + 224 + ], + [ + 8, + 167, + 204, + 224 + ], + [ + 8, + 169, + 206, + 224 + ], + [ + 8, + 171, + 207, + 224 + ], + [ + 8, + 175, + 211, + 224 + ], + [ + 8, + 177, + 213, + 224 + ], + [ + 8, + 179, + 214, + 224 + ], + [ + 8, + 183, + 218, + 224 + ], + [ + 8, + 185, + 220, + 224 + ], + [ + 8, + 187, + 221, + 224 + ], + [ + 8, + 191, + 225, + 224 + ], + [ + 8, + 193, + 227, + 224 + ], + [ + 8, + 195, + 228, + 224 + ], + [ + 8, + 199, + 232, + 224 + ], + [ + 8, + 201, + 234, + 224 + ], + [ + 8, + 203, + 235, + 224 + ], + [ + 8, + 208, + 240, + 224 + ], + [ + 8, + 210, + 241, + 224 + ], + [ + 8, + 215, + 246, + 224 + ], + [ + 8, + 217, + 247, + 224 + ], + [ + 8, + 222, + 252, + 224 + ], + [ + 8, + 224, + 253, + 224 + ], + [ + 8, + 229, + 258, + 224 + ], + [ + 8, + 231, + 259, + 224 + ], + [ + 8, + 236, + 264, + 224 + ], + [ + 8, + 238, + 265, + 224 + ], + [ + 8, + 242, + 269, + 224 + ], + [ + 8, + 244, + 270, + 224 + ], + [ + 8, + 248, + 274, + 224 + ], + [ + 8, + 250, + 275, + 224 + ], + [ + 8, + 254, + 279, + 224 + ], + [ + 8, + 256, + 280, + 224 + ], + [ + 8, + 260, + 284, + 224 + ], + [ + 8, + 262, + 285, + 224 + ], + [ + 8, + 267, + 289, + 224 + ], + [ + 8, + 272, + 293, + 224 + ], + [ + 8, + 277, + 297, + 224 + ], + [ + 8, + 282, + 301, + 224 + ], + [ + 8, + 287, + 305, + 224 + ], + [ + 8, + 291, + 308, + 224 + ], + [ + 8, + 295, + 311, + 224 + ], + [ + 8, + 299, + 314, + 224 + ], + [ + 8, + 303, + 317, + 224 + ], + [ + 8, + 335, + 338, + 224 + ], + [ + 8, + 337, + 342, + 224 + ], + [ + 8, + 340, + 347, + 224 + ], + [ + 8, + 341, + 344, + 224 + ], + [ + 8, + 345, + 350, + 224 + ], + [ + 8, + 346, + 352, + 224 + ], + [ + 8, + 349, + 356, + 224 + ], + [ + 8, + 351, + 358, + 224 + ], + [ + 8, + 353, + 361, + 224 + ], + [ + 8, + 355, + 363, + 224 + ], + [ + 8, + 357, + 365, + 224 + ], + [ + 8, + 359, + 367, + 224 + ], + [ + 8, + 362, + 370, + 224 + ], + [ + 8, + 364, + 372, + 224 + ], + [ + 8, + 366, + 374, + 224 + ], + [ + 8, + 368, + 376, + 224 + ], + [ + 8, + 371, + 379, + 224 + ], + [ + 8, + 373, + 381, + 224 + ], + [ + 8, + 378, + 385, + 224 + ], + [ + 8, + 380, + 387, + 224 + ], + [ + 8, + 384, + 390, + 224 + ], + [ + 8, + 386, + 392, + 224 + ], + [ + 8, + 391, + 396, + 224 + ], + [ + 8, + 395, + 399, + 224 + ], + [ + 8, + 409, + 415, + 224 + ], + [ + 8, + 410, + 416, + 224 + ], + [ + 8, + 413, + 421, + 224 + ], + [ + 8, + 414, + 422, + 224 + ], + [ + 8, + 419, + 429, + 224 + ], + [ + 8, + 420, + 430, + 224 + ], + [ + 8, + 423, + 433, + 224 + ], + [ + 8, + 424, + 434, + 224 + ], + [ + 8, + 427, + 439, + 224 + ], + [ + 8, + 428, + 440, + 224 + ], + [ + 8, + 431, + 443, + 224 + ], + [ + 8, + 432, + 444, + 224 + ], + [ + 8, + 437, + 451, + 224 + ], + [ + 8, + 438, + 452, + 224 + ], + [ + 8, + 441, + 455, + 224 + ], + [ + 8, + 442, + 456, + 224 + ], + [ + 8, + 445, + 461, + 224 + ], + [ + 8, + 446, + 462, + 224 + ], + [ + 8, + 449, + 465, + 224 + ], + [ + 8, + 450, + 466, + 224 + ], + [ + 8, + 453, + 469, + 224 + ], + [ + 8, + 454, + 470, + 224 + ], + [ + 8, + 457, + 473, + 224 + ], + [ + 8, + 458, + 474, + 224 + ], + [ + 8, + 463, + 479, + 224 + ], + [ + 8, + 464, + 480, + 224 + ], + [ + 8, + 467, + 483, + 224 + ], + [ + 8, + 468, + 484, + 224 + ], + [ + 8, + 471, + 487, + 224 + ], + [ + 8, + 472, + 488, + 224 + ], + [ + 8, + 475, + 491, + 224 + ], + [ + 8, + 476, + 492, + 224 + ], + [ + 8, + 481, + 497, + 224 + ], + [ + 8, + 482, + 498, + 224 + ], + [ + 8, + 485, + 501, + 224 + ], + [ + 8, + 486, + 502, + 224 + ], + [ + 8, + 495, + 509, + 224 + ], + [ + 8, + 496, + 510, + 224 + ], + [ + 8, + 499, + 513, + 224 + ], + [ + 8, + 500, + 514, + 224 + ], + [ + 8, + 507, + 519, + 224 + ], + [ + 8, + 508, + 520, + 224 + ], + [ + 8, + 511, + 523, + 224 + ], + [ + 8, + 512, + 524, + 224 + ], + [ + 8, + 521, + 531, + 224 + ], + [ + 8, + 522, + 532, + 224 + ], + [ + 8, + 529, + 537, + 224 + ], + [ + 8, + 530, + 538, + 224 + ], + [ + 16, + -1, + 5, + 224 + ], + [ + 16, + -1, + 7, + 224 + ], + [ + 16, + -1, + 9, + 224 + ], + [ + 16, + -1, + 11, + 224 + ], + [ + 16, + -1, + 13, + 224 + ], + [ + 16, + -1, + 16, + 224 + ], + [ + 16, + -1, + 19, + 224 + ], + [ + 16, + -1, + 22, + 224 + ], + [ + 16, + -1, + 25, + 224 + ], + [ + 16, + -1, + 28, + 224 + ], + [ + 16, + -1, + 32, + 224 + ], + [ + 16, + -1, + 36, + 224 + ], + [ + 16, + -1, + 40, + 224 + ], + [ + 16, + -1, + 44, + 224 + ], + [ + 16, + -1, + 49, + 224 + ], + [ + 16, + -1, + 54, + 224 + ], + [ + 16, + -1, + 59, + 224 + ], + [ + 16, + -1, + 64, + 224 + ], + [ + 16, + -1, + 69, + 224 + ], + [ + 16, + -1, + 75, + 224 + ], + [ + 16, + -1, + 81, + 224 + ], + [ + 16, + -1, + 87, + 224 + ], + [ + 16, + -1, + 93, + 224 + ], + [ + 16, + -1, + 99, + 224 + ], + [ + 16, + -1, + 106, + 224 + ], + [ + 16, + -1, + 113, + 224 + ], + [ + 16, + -1, + 120, + 224 + ], + [ + 16, + -1, + 127, + 224 + ], + [ + 16, + -1, + 135, + 224 + ], + [ + 16, + -1, + 143, + 224 + ], + [ + 16, + -1, + 151, + 224 + ], + [ + 16, + -1, + 159, + 224 + ], + [ + 16, + -1, + 167, + 224 + ], + [ + 16, + -1, + 175, + 224 + ], + [ + 16, + -1, + 183, + 224 + ], + [ + 16, + -1, + 191, + 224 + ], + [ + 16, + -1, + 199, + 224 + ], + [ + 16, + -1, + 335, + 224 + ], + [ + 16, + -1, + 337, + 224 + ], + [ + 16, + -1, + 341, + 224 + ], + [ + 16, + -1, + 345, + 224 + ], + [ + 16, + -1, + 349, + 224 + ], + [ + 16, + -1, + 355, + 224 + ], + [ + 16, + -1, + 362, + 224 + ], + [ + 16, + -1, + 368, + 224 + ], + [ + 16, + -1, + 409, + 224 + ], + [ + 16, + -1, + 410, + 224 + ], + [ + 16, + -1, + 413, + 224 + ], + [ + 16, + -1, + 414, + 224 + ], + [ + 16, + -1, + 419, + 224 + ], + [ + 16, + -1, + 420, + 224 + ], + [ + 16, + -1, + 427, + 224 + ], + [ + 16, + -1, + 428, + 224 + ], + [ + 16, + -1, + 437, + 224 + ], + [ + 16, + -1, + 438, + 224 + ], + [ + 16, + -1, + 449, + 224 + ], + [ + 16, + -1, + 450, + 224 + ], + [ + 16, + -1, + 463, + 224 + ], + [ + 16, + -1, + 464, + 224 + ], + [ + 16, + -1, + 475, + 224 + ], + [ + 16, + -1, + 476, + 224 + ], + [ + 16, + 100, + 170, + 224 + ], + [ + 16, + 107, + 178, + 224 + ], + [ + 16, + 114, + 186, + 224 + ], + [ + 16, + 121, + 194, + 224 + ], + [ + 16, + 128, + 202, + 224 + ], + [ + 16, + 136, + 209, + 224 + ], + [ + 16, + 144, + 216, + 224 + ], + [ + 16, + 152, + 223, + 224 + ], + [ + 16, + 160, + 230, + 224 + ], + [ + 16, + 168, + 237, + 224 + ], + [ + 16, + 176, + 243, + 224 + ], + [ + 16, + 184, + 249, + 224 + ], + [ + 16, + 192, + 255, + 224 + ], + [ + 16, + 200, + 261, + 224 + ], + [ + 16, + 207, + 266, + 224 + ], + [ + 16, + 214, + 271, + 224 + ], + [ + 16, + 221, + 276, + 224 + ], + [ + 16, + 228, + 281, + 224 + ], + [ + 16, + 235, + 286, + 224 + ], + [ + 16, + 241, + 290, + 224 + ], + [ + 16, + 247, + 294, + 224 + ], + [ + 16, + 253, + 298, + 224 + ], + [ + 16, + 259, + 302, + 224 + ], + [ + 16, + 265, + 306, + 224 + ], + [ + 16, + 270, + 309, + 224 + ], + [ + 16, + 275, + 312, + 224 + ], + [ + 16, + 280, + 315, + 224 + ], + [ + 16, + 285, + 318, + 224 + ], + [ + 16, + 289, + 320, + 224 + ], + [ + 16, + 293, + 322, + 224 + ], + [ + 16, + 297, + 324, + 224 + ], + [ + 16, + 301, + 326, + 224 + ], + [ + 16, + 305, + 328, + 224 + ], + [ + 16, + 308, + 329, + 224 + ], + [ + 16, + 311, + 330, + 224 + ], + [ + 16, + 314, + 331, + 224 + ], + [ + 16, + 317, + 332, + 224 + ], + [ + 16, + 361, + 377, + 224 + ], + [ + 16, + 367, + 383, + 224 + ], + [ + 16, + 374, + 389, + 224 + ], + [ + 16, + 381, + 394, + 224 + ], + [ + 16, + 387, + 398, + 224 + ], + [ + 16, + 392, + 401, + 224 + ], + [ + 16, + 396, + 403, + 224 + ], + [ + 16, + 399, + 404, + 224 + ], + [ + 16, + 461, + 493, + 224 + ], + [ + 16, + 462, + 494, + 224 + ], + [ + 16, + 473, + 505, + 224 + ], + [ + 16, + 474, + 506, + 224 + ], + [ + 16, + 487, + 517, + 224 + ], + [ + 16, + 488, + 518, + 224 + ], + [ + 16, + 501, + 527, + 224 + ], + [ + 16, + 502, + 528, + 224 + ], + [ + 16, + 513, + 535, + 224 + ], + [ + 16, + 514, + 536, + 224 + ], + [ + 16, + 523, + 541, + 224 + ], + [ + 16, + 524, + 542, + 224 + ], + [ + 16, + 531, + 545, + 224 + ], + [ + 16, + 532, + 546, + 224 + ], + [ + 16, + 537, + 547, + 224 + ], + [ + 16, + 538, + 548, + 224 + ], + [ + 32, + -1, + 29, + 224 + ], + [ + 32, + -1, + 33, + 224 + ], + [ + 32, + -1, + 37, + 224 + ], + [ + 32, + -1, + 41, + 224 + ], + [ + 32, + -1, + 45, + 224 + ], + [ + 32, + -1, + 50, + 224 + ], + [ + 32, + -1, + 55, + 224 + ], + [ + 32, + -1, + 60, + 224 + ], + [ + 32, + -1, + 65, + 224 + ], + [ + 32, + -1, + 70, + 224 + ], + [ + 32, + -1, + 76, + 224 + ], + [ + 32, + -1, + 82, + 224 + ], + [ + 32, + -1, + 88, + 224 + ], + [ + 32, + -1, + 94, + 224 + ], + [ + 32, + -1, + 101, + 224 + ], + [ + 32, + -1, + 108, + 224 + ], + [ + 32, + -1, + 115, + 224 + ], + [ + 32, + -1, + 122, + 224 + ], + [ + 32, + -1, + 129, + 224 + ], + [ + 32, + -1, + 137, + 224 + ], + [ + 32, + -1, + 145, + 224 + ], + [ + 32, + -1, + 153, + 224 + ], + [ + 32, + -1, + 161, + 224 + ], + [ + 32, + -1, + 169, + 224 + ], + [ + 32, + -1, + 177, + 224 + ], + [ + 32, + -1, + 185, + 224 + ], + [ + 32, + -1, + 193, + 224 + ], + [ + 32, + -1, + 201, + 224 + ], + [ + 32, + -1, + 208, + 224 + ], + [ + 32, + -1, + 215, + 224 + ], + [ + 32, + -1, + 222, + 224 + ], + [ + 32, + -1, + 229, + 224 + ], + [ + 32, + -1, + 236, + 224 + ], + [ + 32, + -1, + 242, + 224 + ], + [ + 32, + -1, + 248, + 224 + ], + [ + 32, + -1, + 254, + 224 + ], + [ + 32, + -1, + 260, + 224 + ], + [ + 32, + -1, + 340, + 224 + ], + [ + 32, + -1, + 346, + 224 + ], + [ + 32, + -1, + 351, + 224 + ], + [ + 32, + -1, + 357, + 224 + ], + [ + 32, + -1, + 364, + 224 + ], + [ + 32, + -1, + 371, + 224 + ], + [ + 32, + -1, + 378, + 224 + ], + [ + 32, + -1, + 384, + 224 + ], + [ + 32, + -1, + 423, + 224 + ], + [ + 32, + -1, + 424, + 224 + ], + [ + 32, + -1, + 431, + 224 + ], + [ + 32, + -1, + 432, + 224 + ], + [ + 32, + -1, + 441, + 224 + ], + [ + 32, + -1, + 442, + 224 + ], + [ + 32, + -1, + 453, + 224 + ], + [ + 32, + -1, + 454, + 224 + ], + [ + 32, + -1, + 467, + 224 + ], + [ + 32, + -1, + 468, + 224 + ], + [ + 32, + -1, + 481, + 224 + ], + [ + 32, + -1, + 482, + 224 + ], + [ + 32, + -1, + 495, + 224 + ], + [ + 32, + -1, + 496, + 224 + ], + [ + 32, + -1, + 507, + 224 + ], + [ + 32, + -1, + 508, + 224 + ], + [ + 32, + 48, + 170, + 224 + ], + [ + 32, + 53, + 178, + 224 + ], + [ + 32, + 58, + 186, + 224 + ], + [ + 32, + 63, + 194, + 224 + ], + [ + 32, + 68, + 202, + 224 + ], + [ + 32, + 74, + 209, + 224 + ], + [ + 32, + 80, + 216, + 224 + ], + [ + 32, + 86, + 223, + 224 + ], + [ + 32, + 92, + 230, + 224 + ], + [ + 32, + 98, + 237, + 224 + ], + [ + 32, + 105, + 243, + 224 + ], + [ + 32, + 112, + 249, + 224 + ], + [ + 32, + 119, + 255, + 224 + ], + [ + 32, + 126, + 261, + 224 + ], + [ + 32, + 134, + 266, + 224 + ], + [ + 32, + 142, + 271, + 224 + ], + [ + 32, + 150, + 276, + 224 + ], + [ + 32, + 158, + 281, + 224 + ], + [ + 32, + 166, + 286, + 224 + ], + [ + 32, + 174, + 290, + 224 + ], + [ + 32, + 182, + 294, + 224 + ], + [ + 32, + 190, + 298, + 224 + ], + [ + 32, + 198, + 302, + 224 + ], + [ + 32, + 206, + 306, + 224 + ], + [ + 32, + 213, + 309, + 224 + ], + [ + 32, + 220, + 312, + 224 + ], + [ + 32, + 227, + 315, + 224 + ], + [ + 32, + 234, + 318, + 224 + ], + [ + 32, + 240, + 320, + 224 + ], + [ + 32, + 246, + 322, + 224 + ], + [ + 32, + 252, + 324, + 224 + ], + [ + 32, + 258, + 326, + 224 + ], + [ + 32, + 264, + 328, + 224 + ], + [ + 32, + 269, + 329, + 224 + ], + [ + 32, + 274, + 330, + 224 + ], + [ + 32, + 279, + 331, + 224 + ], + [ + 32, + 284, + 332, + 224 + ], + [ + 32, + 347, + 377, + 224 + ], + [ + 32, + 352, + 383, + 224 + ], + [ + 32, + 358, + 389, + 224 + ], + [ + 32, + 365, + 394, + 224 + ], + [ + 32, + 372, + 398, + 224 + ], + [ + 32, + 379, + 401, + 224 + ], + [ + 32, + 385, + 403, + 224 + ], + [ + 32, + 390, + 404, + 224 + ], + [ + 32, + 433, + 493, + 224 + ], + [ + 32, + 434, + 494, + 224 + ], + [ + 32, + 443, + 505, + 224 + ], + [ + 32, + 444, + 506, + 224 + ], + [ + 32, + 455, + 517, + 224 + ], + [ + 32, + 456, + 518, + 224 + ], + [ + 32, + 469, + 527, + 224 + ], + [ + 32, + 470, + 528, + 224 + ], + [ + 32, + 483, + 535, + 224 + ], + [ + 32, + 484, + 536, + 224 + ], + [ + 32, + 497, + 541, + 224 + ], + [ + 32, + 498, + 542, + 224 + ], + [ + 32, + 509, + 545, + 224 + ], + [ + 32, + 510, + 546, + 224 + ], + [ + 32, + 519, + 547, + 224 + ], + [ + 32, + 520, + 548, + 224 + ], + [ + 48, + -1, + 72, + 224 + ], + [ + 48, + -1, + 78, + 224 + ], + [ + 48, + -1, + 84, + 224 + ], + [ + 48, + -1, + 90, + 224 + ], + [ + 48, + -1, + 96, + 224 + ], + [ + 48, + -1, + 103, + 224 + ], + [ + 48, + -1, + 110, + 224 + ], + [ + 48, + -1, + 117, + 224 + ], + [ + 48, + -1, + 124, + 224 + ], + [ + 48, + -1, + 131, + 224 + ], + [ + 48, + -1, + 139, + 224 + ], + [ + 48, + -1, + 147, + 224 + ], + [ + 48, + -1, + 155, + 224 + ], + [ + 48, + -1, + 163, + 224 + ], + [ + 48, + -1, + 171, + 224 + ], + [ + 48, + -1, + 179, + 224 + ], + [ + 48, + -1, + 187, + 224 + ], + [ + 48, + -1, + 195, + 224 + ], + [ + 48, + -1, + 203, + 224 + ], + [ + 48, + -1, + 210, + 224 + ], + [ + 48, + -1, + 217, + 224 + ], + [ + 48, + -1, + 224, + 224 + ], + [ + 48, + -1, + 231, + 224 + ], + [ + 48, + -1, + 238, + 224 + ], + [ + 48, + -1, + 244, + 224 + ], + [ + 48, + -1, + 250, + 224 + ], + [ + 48, + -1, + 256, + 224 + ], + [ + 48, + -1, + 262, + 224 + ], + [ + 48, + -1, + 267, + 224 + ], + [ + 48, + -1, + 272, + 224 + ], + [ + 48, + -1, + 277, + 224 + ], + [ + 48, + -1, + 282, + 224 + ], + [ + 48, + -1, + 287, + 224 + ], + [ + 48, + -1, + 291, + 224 + ], + [ + 48, + -1, + 295, + 224 + ], + [ + 48, + -1, + 299, + 224 + ], + [ + 48, + -1, + 303, + 224 + ], + [ + 48, + -1, + 353, + 224 + ], + [ + 48, + -1, + 359, + 224 + ], + [ + 48, + -1, + 366, + 224 + ], + [ + 48, + -1, + 373, + 224 + ], + [ + 48, + -1, + 380, + 224 + ], + [ + 48, + -1, + 386, + 224 + ], + [ + 48, + -1, + 391, + 224 + ], + [ + 48, + -1, + 395, + 224 + ], + [ + 48, + -1, + 445, + 224 + ], + [ + 48, + -1, + 446, + 224 + ], + [ + 48, + -1, + 457, + 224 + ], + [ + 48, + -1, + 458, + 224 + ], + [ + 48, + -1, + 471, + 224 + ], + [ + 48, + -1, + 472, + 224 + ], + [ + 48, + -1, + 485, + 224 + ], + [ + 48, + -1, + 486, + 224 + ], + [ + 48, + -1, + 499, + 224 + ], + [ + 48, + -1, + 500, + 224 + ], + [ + 48, + -1, + 511, + 224 + ], + [ + 48, + -1, + 512, + 224 + ], + [ + 48, + -1, + 521, + 224 + ], + [ + 48, + -1, + 522, + 224 + ], + [ + 48, + -1, + 529, + 224 + ], + [ + 48, + -1, + 530, + 224 + ], + [ + 48, + 15, + 170, + 224 + ], + [ + 48, + 18, + 178, + 224 + ], + [ + 48, + 21, + 186, + 224 + ], + [ + 48, + 24, + 194, + 224 + ], + [ + 48, + 27, + 202, + 224 + ], + [ + 48, + 31, + 209, + 224 + ], + [ + 48, + 35, + 216, + 224 + ], + [ + 48, + 39, + 223, + 224 + ], + [ + 48, + 43, + 230, + 224 + ], + [ + 48, + 47, + 237, + 224 + ], + [ + 48, + 52, + 243, + 224 + ], + [ + 48, + 57, + 249, + 224 + ], + [ + 48, + 62, + 255, + 224 + ], + [ + 48, + 67, + 261, + 224 + ], + [ + 48, + 73, + 266, + 224 + ], + [ + 48, + 79, + 271, + 224 + ], + [ + 48, + 85, + 276, + 224 + ], + [ + 48, + 91, + 281, + 224 + ], + [ + 48, + 97, + 286, + 224 + ], + [ + 48, + 104, + 290, + 224 + ], + [ + 48, + 111, + 294, + 224 + ], + [ + 48, + 118, + 298, + 224 + ], + [ + 48, + 125, + 302, + 224 + ], + [ + 48, + 132, + 306, + 224 + ], + [ + 48, + 140, + 309, + 224 + ], + [ + 48, + 148, + 312, + 224 + ], + [ + 48, + 156, + 315, + 224 + ], + [ + 48, + 164, + 318, + 224 + ], + [ + 48, + 172, + 320, + 224 + ], + [ + 48, + 180, + 322, + 224 + ], + [ + 48, + 188, + 324, + 224 + ], + [ + 48, + 196, + 326, + 224 + ], + [ + 48, + 204, + 328, + 224 + ], + [ + 48, + 211, + 329, + 224 + ], + [ + 48, + 218, + 330, + 224 + ], + [ + 48, + 225, + 331, + 224 + ], + [ + 48, + 232, + 332, + 224 + ], + [ + 48, + 338, + 377, + 224 + ], + [ + 48, + 342, + 383, + 224 + ], + [ + 48, + 344, + 389, + 224 + ], + [ + 48, + 350, + 394, + 224 + ], + [ + 48, + 356, + 398, + 224 + ], + [ + 48, + 363, + 401, + 224 + ], + [ + 48, + 370, + 403, + 224 + ], + [ + 48, + 376, + 404, + 224 + ], + [ + 48, + 415, + 493, + 224 + ], + [ + 48, + 416, + 494, + 224 + ], + [ + 48, + 421, + 505, + 224 + ], + [ + 48, + 422, + 506, + 224 + ], + [ + 48, + 429, + 517, + 224 + ], + [ + 48, + 430, + 518, + 224 + ], + [ + 48, + 439, + 527, + 224 + ], + [ + 48, + 440, + 528, + 224 + ], + [ + 48, + 451, + 535, + 224 + ], + [ + 48, + 452, + 536, + 224 + ], + [ + 48, + 465, + 541, + 224 + ], + [ + 48, + 466, + 542, + 224 + ], + [ + 48, + 479, + 545, + 224 + ], + [ + 48, + 480, + 546, + 224 + ], + [ + 48, + 491, + 547, + 224 + ], + [ + 48, + 492, + 548, + 224 + ] + ], + "widths": [ + 4, + 5, + 6, + 7, + 8, + 9 + ], + "inventory": { + "4": 26, + "5": 2, + "6": 18, + "7": 52, + "8": 97, + "9": 213 + }, + "local_profile": { + "1": 2439, + "2": 726, + "3": 224, + "4": 102, + "5": 20, + "8": 8 + }, + "x": [ + [ + 0, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 1, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 2, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 3, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 4, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 5, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 6, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 7, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 8, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 9, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 10, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 11, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 12, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 13, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 14, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 15, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 16, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 17, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 18, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 19, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 20, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 21, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 22, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 23, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 24, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 25, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 26, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 27, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 28, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 29, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 30, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 31, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 32, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 33, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 34, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 35, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 36, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 37, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 38, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 39, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 40, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 41, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 42, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 43, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 44, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 45, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 46, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 47, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 48, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 49, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 50, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 51, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 52, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 53, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 54, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 55, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 56, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 57, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 58, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 59, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 60, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 61, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 62, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 63, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 64, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 65, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 66, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 67, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 68, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 69, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 70, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 71, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 72, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 73, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 74, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 75, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 76, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 77, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 78, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 79, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 80, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 81, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 82, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 83, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 84, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 85, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 86, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 87, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 88, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 89, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 90, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 91, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 92, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 93, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 94, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 95, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 96, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 97, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 98, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 99, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 100, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 101, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 102, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 103, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 104, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 105, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 106, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 107, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 108, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 109, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 110, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 111, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 112, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 113, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 114, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 115, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 116, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 117, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 118, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 119, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 120, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 121, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 122, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 123, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 124, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 125, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 126, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 127, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 128, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 129, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 130, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 131, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 132, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 133, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 134, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 135, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 136, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 137, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 138, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 139, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 140, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 141, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 142, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 143, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 144, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 145, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 146, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 147, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 148, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 149, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 150, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 151, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 152, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 153, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 154, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 155, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 156, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 157, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 158, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 159, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 160, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 161, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 162, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 163, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 164, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 165, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 166, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 167, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 168, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 169, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 170, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 171, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 172, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 173, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 174, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 175, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 176, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 177, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 178, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 179, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 180, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 181, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 182, + [ + 0, + 0, + 0, + 0, + 1, + 0 + ], + 1792 + ], + [ + 183, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 1315 + ], + [ + 183, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 477 + ], + [ + 184, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 1789 + ], + [ + 184, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 3 + ], + [ + 185, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 773 + ], + [ + 185, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1019 + ], + [ + 186, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 187, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 188, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 189, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 888 + ], + [ + 189, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 904 + ], + [ + 190, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 3 + ], + [ + 190, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1789 + ], + [ + 191, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 1597 + ], + [ + 191, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 195 + ], + [ + 192, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 193, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 194, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 195, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 196, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 3 + ], + [ + 196, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1789 + ], + [ + 197, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 198, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 199, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 200, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 201, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 202, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 203, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 204, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 205, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 206, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 207, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 208, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 209, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 210, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 211, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 212, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 213, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 214, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 215, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 216, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 217, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 218, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 219, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 220, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 221, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 96 + ], + [ + 221, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1696 + ], + [ + 222, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 3 + ], + [ + 222, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1789 + ], + [ + 223, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 224, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 225, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 226, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 227, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 228, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 229, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 230, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 231, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 1769 + ], + [ + 231, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 23 + ], + [ + 232, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 233, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 234, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 253 + ], + [ + 234, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1539 + ], + [ + 235, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 236, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 237, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 238, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 239, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 240, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 241, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 242, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 243, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 244, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 245, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 246, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 247, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 248, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 249, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 250, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 251, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 252, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 253, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 254, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 255, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 256, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 257, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 258, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 259, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 260, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 261, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 262, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 263, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 264, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 265, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 266, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 267, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 268, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 269, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 270, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 271, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 272, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 196 + ], + [ + 272, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1596 + ], + [ + 273, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 274, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 275, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 276, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 277, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 278, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 279, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 280, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 89 + ], + [ + 280, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1703 + ], + [ + 281, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 282, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 283, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 284, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 285, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 286, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 287, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 288, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 384 + ], + [ + 288, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1408 + ], + [ + 289, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 290, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 291, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 292, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 293, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 294, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 295, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 296, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 297, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 298, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 299, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 300, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 301, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 302, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1792 + ], + [ + 303, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 349 + ], + [ + 303, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1443 + ], + [ + 304, + [ + 0, + 0, + 0, + 0, + 2, + 0 + ], + 3 + ], + [ + 304, + [ + 0, + 0, + 0, + 1, + 0, + 1 + ], + 1789 + ], + [ + 305, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 306, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 306, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 307, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 308, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 308, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 309, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 309, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 310, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 311, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 311, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 312, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 573 + ], + [ + 312, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1219 + ], + [ + 313, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 313, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 314, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 314, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 315, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 315, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 316, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 316, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 1325 + ], + [ + 316, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 464 + ], + [ + 317, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 317, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 318, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 318, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 319, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 319, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 320, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 3 + ], + [ + 320, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 321, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 322, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 323, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 323, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 324, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 325, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 781 + ], + [ + 325, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 1008 + ], + [ + 325, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 326, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 326, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 327, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 327, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 328, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 893 + ], + [ + 328, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 899 + ], + [ + 329, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 329, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 330, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 330, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 331, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 3 + ], + [ + 331, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 332, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 333, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 333, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 334, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 672 + ], + [ + 334, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 1117 + ], + [ + 334, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 335, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 336, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 337, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 338, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 338, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 339, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 339, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 340, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 3 + ], + [ + 340, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1517 + ], + [ + 340, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 269 + ], + [ + 340, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 341, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 341, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 342, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 342, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 343, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1533 + ], + [ + 343, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 256 + ], + [ + 343, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 344, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 80 + ], + [ + 344, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1712 + ], + [ + 345, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 345, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 346, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 454 + ], + [ + 346, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1338 + ], + [ + 347, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 348, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 157 + ], + [ + 348, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 432 + ], + [ + 348, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1203 + ], + [ + 349, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 349, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 350, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 351, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 29 + ], + [ + 351, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1763 + ], + [ + 352, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 485 + ], + [ + 352, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1304 + ], + [ + 352, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 353, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 448 + ], + [ + 353, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1344 + ], + [ + 354, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 354, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 355, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 3 + ], + [ + 355, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 356, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 1613 + ], + [ + 356, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 179 + ], + [ + 357, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 358, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 359, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 360, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 360, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 361, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 992 + ], + [ + 361, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 800 + ], + [ + 362, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 363, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 363, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 364, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 16 + ], + [ + 364, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1776 + ], + [ + 365, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 366, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 1789 + ], + [ + 366, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 367, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 367, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 368, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 368, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 369, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 369, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 370, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 1789 + ], + [ + 370, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 371, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 372, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 373, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 373, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 374, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 3 + ], + [ + 374, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 375, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 397 + ], + [ + 375, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 375, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 355 + ], + [ + 375, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1037 + ], + [ + 376, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 376, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 377, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 3 + ], + [ + 377, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 378, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 378, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 379, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 379, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 380, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 45 + ], + [ + 380, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1747 + ], + [ + 381, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1229 + ], + [ + 381, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 272 + ], + [ + 381, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 291 + ], + [ + 382, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 383, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 592 + ], + [ + 383, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 160 + ], + [ + 383, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1040 + ], + [ + 384, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 773 + ], + [ + 384, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 80 + ], + [ + 384, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 939 + ], + [ + 385, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 3 + ], + [ + 385, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 829 + ], + [ + 385, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 27 + ], + [ + 385, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 933 + ], + [ + 386, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 386, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 387, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1085 + ], + [ + 387, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 707 + ], + [ + 388, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 388, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 389, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1101 + ], + [ + 389, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 691 + ], + [ + 390, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 390, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 391, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 1087 + ], + [ + 391, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 313 + ], + [ + 391, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 389 + ], + [ + 391, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 392, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 392, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 393, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 394, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 537 + ], + [ + 394, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1255 + ], + [ + 395, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 395, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 396, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 397, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1667 + ], + [ + 397, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 125 + ], + [ + 398, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 398, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 253 + ], + [ + 398, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1536 + ], + [ + 399, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1567 + ], + [ + 399, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 14 + ], + [ + 399, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 211 + ], + [ + 400, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1565 + ], + [ + 400, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 19 + ], + [ + 400, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 208 + ], + [ + 401, + [ + 0, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 401, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 402, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1374 + ], + [ + 402, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 2 + ], + [ + 402, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 416 + ], + [ + 403, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 403, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 404, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 405, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 405, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 16 + ], + [ + 405, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1773 + ], + [ + 406, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 407, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 536 + ], + [ + 407, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 304 + ], + [ + 407, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 952 + ], + [ + 408, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1312 + ], + [ + 408, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 480 + ], + [ + 409, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1792 + ], + [ + 410, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 8 + ], + [ + 410, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 96 + ], + [ + 410, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1688 + ], + [ + 411, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 412, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1792 + ], + [ + 413, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 413, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 368 + ], + [ + 413, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1421 + ], + [ + 414, + [ + 0, + 0, + 0, + 2, + 0, + 2 + ], + 1021 + ], + [ + 414, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 752 + ], + [ + 414, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 16 + ], + [ + 414, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 415, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 339 + ], + [ + 415, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1453 + ], + [ + 416, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 3 + ], + [ + 416, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 176 + ], + [ + 416, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1613 + ], + [ + 417, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1437 + ], + [ + 417, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 417, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 352 + ], + [ + 418, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1635 + ], + [ + 418, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 157 + ], + [ + 419, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1072 + ], + [ + 419, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 720 + ], + [ + 420, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 420, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1789 + ], + [ + 421, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 205 + ], + [ + 421, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1587 + ], + [ + 422, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1437 + ], + [ + 422, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 355 + ], + [ + 423, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1789 + ], + [ + 423, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 424, + [ + 0, + 0, + 0, + 1, + 2, + 1 + ], + 3 + ], + [ + 424, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 688 + ], + [ + 424, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 80 + ], + [ + 424, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 1021 + ], + [ + 425, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1581 + ], + [ + 425, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 3 + ], + [ + 425, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 208 + ], + [ + 426, + [ + 0, + 0, + 0, + 1, + 2, + 1 + ], + 3 + ], + [ + 426, + [ + 0, + 0, + 1, + 0, + 1, + 2 + ], + 1549 + ], + [ + 426, + [ + 0, + 1, + 0, + 0, + 0, + 3 + ], + 29 + ], + [ + 426, + [ + 1, + 0, + 0, + 0, + 0, + 3 + ], + 211 + ], + [ + 427, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 428, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 428, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 429, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 430, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 431, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 432, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 433, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 434, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 435, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 436, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 437, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 437, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 438, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 438, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 439, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 440, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 441, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 442, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 442, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 443, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 444, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 445, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 446, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 446, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 447, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 447, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 448, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 448, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 449, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 450, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 451, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 417 + ], + [ + 451, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1375 + ], + [ + 452, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 453, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 453, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 454, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 454, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 455, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 456, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 456, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 457, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 457, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 458, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 459, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 460, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 461, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 462, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 462, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 463, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 463, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 464, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 465, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 466, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 467, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 468, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 469, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 469, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 470, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 471, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 472, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 472, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 473, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 474, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 475, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 476, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 477, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 478, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 479, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 479, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 480, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 481, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 482, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 483, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 484, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 485, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 486, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 487, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 488, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 488, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 489, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 489, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 490, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 491, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 492, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 493, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 494, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 494, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 495, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 496, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 496, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 497, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 497, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 498, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 498, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 499, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 499, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 500, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 500, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 501, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 502, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 502, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 503, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 504, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 505, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 505, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 506, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 506, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 507, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 508, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 509, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 509, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 510, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 511, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 512, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 513, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 514, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 515, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1789 + ], + [ + 515, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 3 + ], + [ + 516, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 517, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 517, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 518, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 519, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 520, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 521, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 522, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 523, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 524, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 525, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 526, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 527, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 527, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 528, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 529, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 530, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 531, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 532, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 533, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 534, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 535, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 535, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 536, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 537, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 538, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 539, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 540, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 541, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 542, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 542, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 543, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 543, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 544, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 545, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 3 + ], + [ + 545, + [ + 0, + 0, + 0, + 0, + 0, + 5 + ], + 1789 + ], + [ + 546, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 547, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ], + [ + 548, + [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + 1792 + ] + ], + "z": [ + [ + 0, + 10, + 8, + 776 + ], + [ + 0, + 11, + 8, + 240 + ], + [ + 0, + 14, + 8, + 776 + ], + [ + 1, + 9, + 8, + 6 + ], + [ + 1, + 12, + 8, + 776 + ], + [ + 1, + 15, + 8, + 776 + ], + [ + 1, + 18, + 8, + 234 + ], + [ + 2, + 13, + 8, + 776 + ], + [ + 2, + 17, + 8, + 776 + ], + [ + 2, + 21, + 8, + 240 + ], + [ + 3, + 21, + 8, + 246 + ], + [ + 3, + 22, + 8, + 770 + ], + [ + 3, + 24, + 8, + 776 + ], + [ + 4, + 25, + 8, + 278 + ], + [ + 4, + 26, + 8, + 738 + ], + [ + 4, + 27, + 8, + 776 + ], + [ + 5, + 28, + 8, + 331 + ], + [ + 5, + 29, + 8, + 651 + ], + [ + 5, + 30, + 8, + 34 + ], + [ + 5, + 31, + 8, + 776 + ], + [ + 6, + 29, + 8, + 125 + ], + [ + 6, + 33, + 8, + 115 + ], + [ + 6, + 34, + 8, + 776 + ], + [ + 6, + 35, + 8, + 776 + ], + [ + 7, + 37, + 8, + 776 + ], + [ + 7, + 38, + 8, + 240 + ], + [ + 7, + 39, + 8, + 776 + ], + [ + 8, + 33, + 8, + 181 + ], + [ + 8, + 36, + 8, + 539 + ], + [ + 8, + 40, + 8, + 296 + ], + [ + 8, + 42, + 8, + 776 + ], + [ + 9, + 41, + 8, + 776 + ], + [ + 9, + 44, + 8, + 240 + ], + [ + 9, + 47, + 8, + 776 + ], + [ + 10, + 33, + 8, + 480 + ], + [ + 10, + 44, + 8, + 536 + ], + [ + 10, + 45, + 8, + 776 + ], + [ + 11, + 40, + 8, + 480 + ], + [ + 11, + 46, + 8, + 536 + ], + [ + 11, + 50, + 8, + 776 + ], + [ + 12, + 46, + 8, + 240 + ], + [ + 12, + 48, + 8, + 776 + ], + [ + 12, + 53, + 8, + 776 + ], + [ + 13, + 52, + 8, + 776 + ], + [ + 13, + 54, + 8, + 776 + ], + [ + 13, + 57, + 8, + 240 + ], + [ + 14, + 43, + 8, + 776 + ], + [ + 14, + 51, + 8, + 240 + ], + [ + 14, + 56, + 8, + 776 + ], + [ + 15, + 58, + 8, + 776 + ], + [ + 15, + 60, + 8, + 5 + ], + [ + 15, + 61, + 8, + 715 + ], + [ + 15, + 62, + 8, + 296 + ], + [ + 16, + 57, + 8, + 536 + ], + [ + 16, + 59, + 8, + 776 + ], + [ + 16, + 62, + 8, + 480 + ], + [ + 17, + 65, + 8, + 776 + ], + [ + 17, + 66, + 8, + 240 + ], + [ + 17, + 67, + 8, + 776 + ], + [ + 18, + 64, + 8, + 776 + ], + [ + 18, + 66, + 8, + 536 + ], + [ + 18, + 68, + 8, + 480 + ], + [ + 19, + 51, + 8, + 260 + ], + [ + 19, + 70, + 8, + 533 + ], + [ + 19, + 72, + 8, + 776 + ], + [ + 19, + 73, + 8, + 223 + ], + [ + 20, + 69, + 8, + 773 + ], + [ + 20, + 70, + 8, + 243 + ], + [ + 20, + 71, + 8, + 776 + ], + [ + 21, + 74, + 8, + 776 + ], + [ + 21, + 76, + 8, + 240 + ], + [ + 21, + 79, + 8, + 776 + ], + [ + 22, + 61, + 8, + 61 + ], + [ + 22, + 75, + 8, + 770 + ], + [ + 22, + 78, + 8, + 185 + ], + [ + 22, + 80, + 8, + 776 + ], + [ + 23, + 63, + 8, + 776 + ], + [ + 23, + 68, + 8, + 296 + ], + [ + 23, + 73, + 8, + 553 + ], + [ + 23, + 78, + 8, + 167 + ], + [ + 24, + 77, + 8, + 776 + ], + [ + 24, + 82, + 8, + 776 + ], + [ + 24, + 86, + 8, + 240 + ], + [ + 25, + 81, + 8, + 776 + ], + [ + 25, + 87, + 8, + 595 + ], + [ + 25, + 88, + 8, + 421 + ], + [ + 26, + 83, + 8, + 776 + ], + [ + 26, + 84, + 8, + 59 + ], + [ + 26, + 87, + 8, + 181 + ], + [ + 26, + 89, + 8, + 776 + ], + [ + 27, + 92, + 8, + 776 + ], + [ + 27, + 94, + 8, + 240 + ], + [ + 27, + 95, + 8, + 776 + ], + [ + 28, + 76, + 8, + 536 + ], + [ + 28, + 78, + 8, + 424 + ], + [ + 28, + 93, + 8, + 776 + ], + [ + 28, + 98, + 8, + 56 + ], + [ + 29, + 90, + 8, + 589 + ], + [ + 29, + 94, + 8, + 536 + ], + [ + 29, + 98, + 8, + 131 + ], + [ + 29, + 100, + 8, + 536 + ], + [ + 30, + 84, + 8, + 480 + ], + [ + 30, + 91, + 8, + 536 + ], + [ + 30, + 96, + 8, + 776 + ], + [ + 31, + 85, + 8, + 776 + ], + [ + 31, + 97, + 8, + 776 + ], + [ + 31, + 102, + 8, + 240 + ], + [ + 32, + 86, + 8, + 272 + ], + [ + 32, + 103, + 8, + 776 + ], + [ + 32, + 106, + 8, + 395 + ], + [ + 32, + 107, + 8, + 349 + ], + [ + 33, + 91, + 8, + 240 + ], + [ + 33, + 104, + 8, + 776 + ], + [ + 33, + 110, + 8, + 776 + ], + [ + 34, + 90, + 8, + 187 + ], + [ + 34, + 102, + 8, + 536 + ], + [ + 34, + 108, + 8, + 533 + ], + [ + 34, + 111, + 8, + 536 + ], + [ + 35, + 98, + 8, + 589 + ], + [ + 35, + 107, + 8, + 427 + ], + [ + 35, + 112, + 8, + 776 + ], + [ + 36, + 88, + 8, + 355 + ], + [ + 36, + 113, + 8, + 776 + ], + [ + 36, + 116, + 8, + 536 + ], + [ + 36, + 118, + 8, + 125 + ], + [ + 37, + 106, + 8, + 381 + ], + [ + 37, + 117, + 8, + 24 + ], + [ + 37, + 118, + 8, + 611 + ], + [ + 37, + 119, + 8, + 776 + ], + [ + 38, + 100, + 8, + 240 + ], + [ + 38, + 109, + 8, + 776 + ], + [ + 38, + 114, + 8, + 776 + ], + [ + 39, + 105, + 8, + 776 + ], + [ + 39, + 111, + 8, + 240 + ], + [ + 39, + 124, + 8, + 776 + ], + [ + 40, + 115, + 8, + 776 + ], + [ + 40, + 116, + 8, + 240 + ], + [ + 40, + 125, + 8, + 776 + ], + [ + 41, + 120, + 8, + 776 + ], + [ + 41, + 123, + 8, + 480 + ], + [ + 41, + 127, + 8, + 536 + ], + [ + 42, + 122, + 8, + 776 + ], + [ + 42, + 126, + 8, + 776 + ], + [ + 42, + 130, + 8, + 240 + ], + [ + 43, + 108, + 8, + 243 + ], + [ + 43, + 129, + 8, + 773 + ], + [ + 43, + 132, + 8, + 776 + ], + [ + 44, + 134, + 8, + 776 + ], + [ + 44, + 135, + 8, + 776 + ], + [ + 44, + 136, + 8, + 240 + ], + [ + 45, + 123, + 8, + 296 + ], + [ + 45, + 133, + 8, + 776 + ], + [ + 45, + 138, + 8, + 720 + ], + [ + 46, + 138, + 8, + 56 + ], + [ + 46, + 140, + 8, + 776 + ], + [ + 46, + 141, + 8, + 664 + ], + [ + 46, + 142, + 8, + 296 + ], + [ + 47, + 136, + 8, + 536 + ], + [ + 47, + 137, + 8, + 776 + ], + [ + 47, + 142, + 8, + 480 + ], + [ + 48, + 118, + 8, + 40 + ], + [ + 48, + 128, + 8, + 776 + ], + [ + 48, + 146, + 8, + 776 + ], + [ + 48, + 147, + 8, + 200 + ], + [ + 49, + 127, + 8, + 240 + ], + [ + 49, + 131, + 8, + 776 + ], + [ + 49, + 145, + 8, + 776 + ], + [ + 50, + 139, + 8, + 773 + ], + [ + 50, + 150, + 8, + 312 + ], + [ + 50, + 151, + 8, + 539 + ], + [ + 50, + 152, + 8, + 168 + ], + [ + 51, + 141, + 8, + 112 + ], + [ + 51, + 144, + 8, + 296 + ], + [ + 51, + 152, + 8, + 608 + ], + [ + 51, + 156, + 8, + 776 + ], + [ + 52, + 143, + 8, + 776 + ], + [ + 52, + 150, + 8, + 240 + ], + [ + 52, + 154, + 8, + 776 + ], + [ + 53, + 148, + 8, + 776 + ], + [ + 53, + 149, + 8, + 776 + ], + [ + 53, + 160, + 8, + 240 + ], + [ + 54, + 130, + 8, + 536 + ], + [ + 54, + 144, + 8, + 480 + ], + [ + 54, + 163, + 8, + 776 + ], + [ + 55, + 153, + 8, + 496 + ], + [ + 55, + 160, + 8, + 536 + ], + [ + 55, + 161, + 8, + 299 + ], + [ + 55, + 165, + 8, + 461 + ], + [ + 56, + 166, + 8, + 776 + ], + [ + 56, + 167, + 8, + 243 + ], + [ + 56, + 168, + 8, + 773 + ], + [ + 57, + 147, + 8, + 576 + ], + [ + 57, + 158, + 8, + 776 + ], + [ + 57, + 162, + 8, + 107 + ], + [ + 57, + 172, + 8, + 333 + ], + [ + 58, + 161, + 8, + 477 + ], + [ + 58, + 164, + 8, + 776 + ], + [ + 58, + 174, + 8, + 539 + ], + [ + 59, + 153, + 8, + 280 + ], + [ + 59, + 167, + 8, + 533 + ], + [ + 59, + 172, + 8, + 206 + ], + [ + 59, + 176, + 8, + 773 + ], + [ + 60, + 171, + 8, + 776 + ], + [ + 60, + 175, + 8, + 776 + ], + [ + 60, + 179, + 8, + 240 + ], + [ + 61, + 169, + 8, + 776 + ], + [ + 61, + 177, + 8, + 776 + ], + [ + 61, + 181, + 8, + 240 + ], + [ + 62, + 179, + 8, + 536 + ], + [ + 62, + 182, + 8, + 667 + ], + [ + 62, + 184, + 8, + 589 + ], + [ + 63, + 178, + 8, + 776 + ], + [ + 63, + 185, + 8, + 776 + ], + [ + 63, + 188, + 8, + 240 + ], + [ + 64, + 181, + 8, + 536 + ], + [ + 64, + 186, + 8, + 480 + ], + [ + 64, + 187, + 8, + 776 + ], + [ + 65, + 183, + 8, + 776 + ], + [ + 65, + 190, + 8, + 773 + ], + [ + 65, + 191, + 8, + 243 + ], + [ + 66, + 184, + 8, + 187 + ], + [ + 66, + 189, + 8, + 776 + ], + [ + 66, + 191, + 8, + 533 + ], + [ + 66, + 195, + 8, + 296 + ], + [ + 67, + 194, + 8, + 776 + ], + [ + 67, + 195, + 8, + 240 + ], + [ + 67, + 196, + 8, + 776 + ], + [ + 68, + 195, + 8, + 240 + ], + [ + 68, + 198, + 8, + 776 + ], + [ + 68, + 200, + 8, + 776 + ], + [ + 69, + 197, + 8, + 773 + ], + [ + 69, + 201, + 8, + 776 + ], + [ + 69, + 204, + 8, + 243 + ], + [ + 70, + 192, + 8, + 555 + ], + [ + 70, + 203, + 8, + 461 + ], + [ + 70, + 205, + 8, + 776 + ], + [ + 71, + 180, + 8, + 776 + ], + [ + 71, + 182, + 8, + 109 + ], + [ + 71, + 186, + 8, + 296 + ], + [ + 71, + 188, + 8, + 536 + ], + [ + 71, + 202, + 8, + 75 + ], + [ + 72, + 202, + 8, + 701 + ], + [ + 72, + 203, + 8, + 315 + ], + [ + 72, + 211, + 8, + 776 + ], + [ + 73, + 208, + 8, + 517 + ], + [ + 73, + 209, + 8, + 432 + ], + [ + 73, + 212, + 8, + 67 + ], + [ + 73, + 213, + 8, + 776 + ], + [ + 74, + 199, + 8, + 645 + ], + [ + 74, + 207, + 8, + 776 + ], + [ + 74, + 210, + 8, + 371 + ], + [ + 75, + 209, + 8, + 344 + ], + [ + 75, + 214, + 8, + 776 + ], + [ + 75, + 215, + 8, + 672 + ], + [ + 76, + 204, + 8, + 533 + ], + [ + 76, + 215, + 8, + 104 + ], + [ + 76, + 216, + 8, + 382 + ], + [ + 76, + 218, + 8, + 773 + ], + [ + 77, + 192, + 8, + 221 + ], + [ + 77, + 208, + 8, + 259 + ], + [ + 77, + 217, + 8, + 776 + ], + [ + 77, + 221, + 8, + 536 + ], + [ + 78, + 219, + 8, + 776 + ], + [ + 78, + 221, + 8, + 240 + ], + [ + 78, + 225, + 8, + 776 + ], + [ + 79, + 223, + 8, + 457 + ], + [ + 79, + 224, + 8, + 559 + ], + [ + 79, + 226, + 8, + 776 + ], + [ + 80, + 210, + 8, + 405 + ], + [ + 80, + 216, + 8, + 394 + ], + [ + 80, + 224, + 8, + 217 + ], + [ + 80, + 228, + 8, + 776 + ], + [ + 81, + 223, + 8, + 319 + ], + [ + 81, + 230, + 8, + 161 + ], + [ + 81, + 231, + 8, + 776 + ], + [ + 81, + 232, + 8, + 536 + ], + [ + 82, + 206, + 8, + 104 + ], + [ + 82, + 222, + 8, + 776 + ], + [ + 82, + 227, + 8, + 776 + ], + [ + 82, + 229, + 8, + 136 + ], + [ + 83, + 230, + 8, + 240 + ], + [ + 83, + 233, + 8, + 776 + ], + [ + 83, + 235, + 8, + 776 + ], + [ + 84, + 220, + 8, + 776 + ], + [ + 84, + 236, + 8, + 240 + ], + [ + 84, + 237, + 8, + 776 + ], + [ + 85, + 239, + 8, + 351 + ], + [ + 85, + 240, + 8, + 776 + ], + [ + 85, + 241, + 8, + 665 + ], + [ + 86, + 238, + 8, + 776 + ], + [ + 86, + 245, + 8, + 240 + ], + [ + 86, + 246, + 8, + 776 + ], + [ + 87, + 230, + 8, + 375 + ], + [ + 87, + 241, + 8, + 108 + ], + [ + 87, + 245, + 8, + 533 + ], + [ + 87, + 247, + 8, + 776 + ], + [ + 88, + 232, + 8, + 240 + ], + [ + 88, + 248, + 8, + 776 + ], + [ + 88, + 249, + 8, + 776 + ], + [ + 89, + 251, + 8, + 776 + ], + [ + 89, + 252, + 8, + 776 + ], + [ + 89, + 253, + 8, + 240 + ], + [ + 90, + 253, + 8, + 536 + ], + [ + 90, + 255, + 8, + 776 + ], + [ + 90, + 257, + 8, + 480 + ], + [ + 91, + 244, + 8, + 188 + ], + [ + 91, + 256, + 8, + 532 + ], + [ + 91, + 257, + 8, + 296 + ], + [ + 91, + 259, + 8, + 776 + ], + [ + 92, + 260, + 8, + 101 + ], + [ + 92, + 261, + 8, + 776 + ], + [ + 92, + 263, + 8, + 776 + ], + [ + 92, + 264, + 8, + 139 + ], + [ + 93, + 260, + 8, + 240 + ], + [ + 93, + 262, + 8, + 776 + ], + [ + 93, + 265, + 8, + 776 + ], + [ + 94, + 267, + 8, + 240 + ], + [ + 94, + 268, + 8, + 776 + ], + [ + 94, + 269, + 8, + 776 + ], + [ + 95, + 264, + 8, + 637 + ], + [ + 95, + 267, + 8, + 536 + ], + [ + 95, + 270, + 8, + 619 + ], + [ + 96, + 272, + 8, + 776 + ], + [ + 96, + 273, + 8, + 776 + ], + [ + 96, + 274, + 8, + 240 + ], + [ + 97, + 270, + 8, + 157 + ], + [ + 97, + 271, + 8, + 323 + ], + [ + 97, + 274, + 8, + 536 + ], + [ + 97, + 275, + 8, + 776 + ], + [ + 98, + 276, + 8, + 776 + ], + [ + 98, + 278, + 8, + 776 + ], + [ + 98, + 279, + 8, + 240 + ], + [ + 99, + 277, + 8, + 720 + ], + [ + 99, + 279, + 8, + 536 + ], + [ + 99, + 280, + 8, + 536 + ], + [ + 100, + 281, + 8, + 240 + ], + [ + 100, + 282, + 8, + 776 + ], + [ + 100, + 283, + 8, + 776 + ], + [ + 101, + 280, + 8, + 240 + ], + [ + 101, + 284, + 8, + 776 + ], + [ + 101, + 285, + 8, + 776 + ], + [ + 102, + 287, + 8, + 776 + ], + [ + 102, + 288, + 8, + 776 + ], + [ + 102, + 289, + 8, + 240 + ], + [ + 103, + 291, + 8, + 240 + ], + [ + 103, + 292, + 8, + 776 + ], + [ + 103, + 293, + 8, + 776 + ], + [ + 104, + 295, + 8, + 776 + ], + [ + 104, + 296, + 8, + 776 + ], + [ + 104, + 297, + 8, + 240 + ], + [ + 105, + 298, + 8, + 236 + ], + [ + 105, + 299, + 8, + 773 + ], + [ + 105, + 300, + 8, + 7 + ], + [ + 105, + 301, + 8, + 776 + ], + [ + 106, + 300, + 8, + 240 + ], + [ + 106, + 302, + 8, + 776 + ], + [ + 106, + 304, + 8, + 776 + ], + [ + 107, + 303, + 8, + 451 + ], + [ + 107, + 306, + 8, + 513 + ], + [ + 107, + 307, + 8, + 776 + ], + [ + 107, + 308, + 8, + 52 + ], + [ + 108, + 309, + 8, + 240 + ], + [ + 108, + 310, + 8, + 776 + ], + [ + 108, + 311, + 8, + 776 + ], + [ + 109, + 306, + 8, + 263 + ], + [ + 109, + 312, + 8, + 463 + ], + [ + 109, + 313, + 8, + 776 + ], + [ + 109, + 314, + 8, + 290 + ], + [ + 110, + 314, + 8, + 486 + ], + [ + 110, + 315, + 8, + 533 + ], + [ + 110, + 317, + 8, + 773 + ], + [ + 111, + 336, + 8, + 776 + ], + [ + 111, + 337, + 8, + 584 + ], + [ + 111, + 338, + 8, + 432 + ], + [ + 112, + 338, + 8, + 344 + ], + [ + 112, + 339, + 8, + 533 + ], + [ + 112, + 340, + 8, + 139 + ], + [ + 112, + 341, + 8, + 776 + ], + [ + 113, + 344, + 8, + 416 + ], + [ + 113, + 345, + 8, + 776 + ], + [ + 113, + 347, + 8, + 600 + ], + [ + 114, + 342, + 8, + 776 + ], + [ + 114, + 343, + 8, + 656 + ], + [ + 114, + 344, + 8, + 360 + ], + [ + 115, + 346, + 8, + 776 + ], + [ + 115, + 347, + 8, + 176 + ], + [ + 115, + 349, + 8, + 536 + ], + [ + 115, + 350, + 8, + 304 + ], + [ + 116, + 348, + 8, + 776 + ], + [ + 116, + 349, + 8, + 240 + ], + [ + 116, + 351, + 8, + 776 + ], + [ + 117, + 350, + 8, + 469 + ], + [ + 117, + 353, + 8, + 547 + ], + [ + 117, + 354, + 8, + 776 + ], + [ + 118, + 352, + 8, + 776 + ], + [ + 118, + 353, + 8, + 229 + ], + [ + 118, + 357, + 8, + 536 + ], + [ + 118, + 358, + 8, + 251 + ], + [ + 119, + 355, + 8, + 776 + ], + [ + 119, + 356, + 8, + 776 + ], + [ + 119, + 357, + 8, + 240 + ], + [ + 120, + 358, + 8, + 525 + ], + [ + 120, + 362, + 8, + 776 + ], + [ + 120, + 363, + 8, + 491 + ], + [ + 121, + 360, + 8, + 776 + ], + [ + 121, + 363, + 8, + 285 + ], + [ + 121, + 365, + 8, + 731 + ], + [ + 122, + 361, + 8, + 776 + ], + [ + 122, + 365, + 8, + 45 + ], + [ + 122, + 366, + 8, + 195 + ], + [ + 122, + 367, + 8, + 776 + ], + [ + 123, + 364, + 8, + 214 + ], + [ + 123, + 366, + 8, + 581 + ], + [ + 123, + 368, + 8, + 221 + ], + [ + 123, + 369, + 8, + 776 + ], + [ + 124, + 368, + 8, + 555 + ], + [ + 124, + 370, + 8, + 776 + ], + [ + 124, + 372, + 8, + 461 + ], + [ + 125, + 371, + 8, + 776 + ], + [ + 125, + 372, + 8, + 315 + ], + [ + 125, + 373, + 8, + 701 + ], + [ + 126, + 373, + 8, + 75 + ], + [ + 126, + 374, + 8, + 776 + ], + [ + 126, + 375, + 8, + 165 + ], + [ + 126, + 376, + 8, + 776 + ], + [ + 127, + 375, + 8, + 611 + ], + [ + 127, + 378, + 8, + 539 + ], + [ + 127, + 379, + 8, + 642 + ], + [ + 128, + 377, + 8, + 773 + ], + [ + 128, + 379, + 8, + 134 + ], + [ + 128, + 380, + 8, + 776 + ], + [ + 128, + 381, + 8, + 109 + ], + [ + 129, + 381, + 8, + 667 + ], + [ + 129, + 383, + 8, + 776 + ], + [ + 129, + 385, + 8, + 349 + ], + [ + 130, + 385, + 8, + 427 + ], + [ + 130, + 386, + 8, + 589 + ], + [ + 130, + 387, + 8, + 776 + ], + [ + 131, + 386, + 8, + 187 + ], + [ + 131, + 388, + 8, + 776 + ], + [ + 131, + 389, + 8, + 53 + ], + [ + 131, + 390, + 8, + 776 + ], + [ + 132, + 389, + 8, + 720 + ], + [ + 132, + 391, + 8, + 296 + ], + [ + 132, + 392, + 8, + 776 + ], + [ + 133, + 393, + 8, + 240 + ], + [ + 133, + 395, + 8, + 776 + ], + [ + 133, + 396, + 8, + 776 + ], + [ + 134, + 397, + 8, + 240 + ], + [ + 134, + 398, + 8, + 776 + ], + [ + 134, + 399, + 8, + 776 + ], + [ + 135, + 410, + 8, + 776 + ], + [ + 135, + 411, + 8, + 240 + ], + [ + 135, + 412, + 8, + 776 + ], + [ + 136, + 411, + 8, + 536 + ], + [ + 136, + 414, + 8, + 749 + ], + [ + 136, + 415, + 8, + 507 + ], + [ + 137, + 415, + 8, + 269 + ], + [ + 137, + 418, + 8, + 747 + ], + [ + 137, + 419, + 8, + 776 + ], + [ + 138, + 416, + 8, + 776 + ], + [ + 138, + 417, + 8, + 240 + ], + [ + 138, + 421, + 8, + 776 + ], + [ + 139, + 424, + 8, + 776 + ], + [ + 139, + 425, + 8, + 343 + ], + [ + 139, + 429, + 8, + 673 + ], + [ + 140, + 423, + 8, + 240 + ], + [ + 140, + 427, + 8, + 776 + ], + [ + 140, + 430, + 8, + 776 + ], + [ + 141, + 425, + 8, + 433 + ], + [ + 141, + 431, + 8, + 776 + ], + [ + 141, + 433, + 8, + 583 + ], + [ + 142, + 426, + 8, + 47 + ], + [ + 142, + 432, + 8, + 776 + ], + [ + 142, + 433, + 8, + 193 + ], + [ + 142, + 434, + 8, + 776 + ], + [ + 143, + 435, + 8, + 776 + ], + [ + 143, + 438, + 8, + 240 + ], + [ + 143, + 439, + 8, + 776 + ], + [ + 144, + 436, + 8, + 762 + ], + [ + 144, + 437, + 8, + 776 + ], + [ + 144, + 440, + 8, + 254 + ], + [ + 145, + 438, + 8, + 536 + ], + [ + 145, + 440, + 8, + 522 + ], + [ + 145, + 441, + 8, + 734 + ], + [ + 146, + 441, + 8, + 42 + ], + [ + 146, + 442, + 8, + 776 + ], + [ + 146, + 443, + 8, + 776 + ], + [ + 146, + 444, + 8, + 198 + ], + [ + 147, + 444, + 8, + 578 + ], + [ + 147, + 447, + 8, + 776 + ], + [ + 147, + 449, + 8, + 438 + ], + [ + 148, + 445, + 8, + 776 + ], + [ + 148, + 449, + 8, + 240 + ], + [ + 148, + 452, + 8, + 776 + ], + [ + 149, + 446, + 8, + 354 + ], + [ + 149, + 449, + 8, + 98 + ], + [ + 149, + 450, + 8, + 776 + ], + [ + 149, + 454, + 8, + 536 + ], + [ + 149, + 455, + 8, + 28 + ], + [ + 150, + 446, + 8, + 422 + ], + [ + 150, + 453, + 8, + 594 + ], + [ + 150, + 456, + 8, + 776 + ], + [ + 151, + 457, + 8, + 776 + ], + [ + 151, + 458, + 8, + 776 + ], + [ + 151, + 460, + 8, + 240 + ], + [ + 152, + 459, + 8, + 776 + ], + [ + 152, + 460, + 8, + 452 + ], + [ + 152, + 461, + 8, + 564 + ], + [ + 153, + 455, + 8, + 748 + ], + [ + 153, + 462, + 8, + 268 + ], + [ + 153, + 464, + 8, + 776 + ], + [ + 154, + 461, + 8, + 212 + ], + [ + 154, + 462, + 8, + 508 + ], + [ + 154, + 463, + 8, + 296 + ], + [ + 154, + 465, + 8, + 776 + ], + [ + 155, + 463, + 8, + 480 + ], + [ + 155, + 466, + 8, + 776 + ], + [ + 155, + 468, + 8, + 536 + ], + [ + 156, + 467, + 8, + 776 + ], + [ + 156, + 468, + 8, + 240 + ], + [ + 156, + 470, + 8, + 776 + ], + [ + 157, + 460, + 8, + 84 + ], + [ + 157, + 471, + 8, + 536 + ], + [ + 157, + 472, + 8, + 776 + ], + [ + 157, + 473, + 8, + 396 + ], + [ + 158, + 469, + 8, + 776 + ], + [ + 158, + 471, + 8, + 240 + ], + [ + 158, + 474, + 8, + 776 + ], + [ + 159, + 475, + 8, + 776 + ], + [ + 159, + 476, + 8, + 536 + ], + [ + 159, + 478, + 8, + 480 + ], + [ + 160, + 476, + 8, + 240 + ], + [ + 160, + 477, + 8, + 776 + ], + [ + 160, + 479, + 8, + 776 + ], + [ + 161, + 473, + 8, + 380 + ], + [ + 161, + 481, + 8, + 773 + ], + [ + 161, + 482, + 8, + 639 + ], + [ + 162, + 478, + 8, + 296 + ], + [ + 162, + 480, + 8, + 776 + ], + [ + 162, + 482, + 8, + 137 + ], + [ + 162, + 484, + 8, + 583 + ], + [ + 163, + 483, + 8, + 776 + ], + [ + 163, + 484, + 8, + 193 + ], + [ + 163, + 486, + 8, + 47 + ], + [ + 163, + 487, + 8, + 776 + ], + [ + 164, + 485, + 8, + 527 + ], + [ + 164, + 486, + 8, + 489 + ], + [ + 164, + 488, + 8, + 776 + ], + [ + 165, + 485, + 8, + 249 + ], + [ + 165, + 490, + 8, + 767 + ], + [ + 165, + 491, + 8, + 776 + ], + [ + 166, + 486, + 8, + 240 + ], + [ + 166, + 489, + 8, + 776 + ], + [ + 166, + 492, + 8, + 776 + ], + [ + 167, + 494, + 8, + 240 + ], + [ + 167, + 495, + 8, + 776 + ], + [ + 167, + 496, + 8, + 776 + ], + [ + 168, + 493, + 8, + 536 + ], + [ + 168, + 497, + 8, + 545 + ], + [ + 168, + 498, + 8, + 711 + ], + [ + 169, + 490, + 8, + 9 + ], + [ + 169, + 497, + 8, + 231 + ], + [ + 169, + 500, + 8, + 776 + ], + [ + 169, + 501, + 8, + 776 + ], + [ + 170, + 494, + 8, + 536 + ], + [ + 170, + 498, + 8, + 62 + ], + [ + 170, + 499, + 8, + 776 + ], + [ + 170, + 502, + 8, + 418 + ], + [ + 171, + 503, + 8, + 142 + ], + [ + 171, + 504, + 8, + 536 + ], + [ + 171, + 506, + 8, + 776 + ], + [ + 171, + 509, + 8, + 338 + ], + [ + 172, + 503, + 8, + 634 + ], + [ + 172, + 505, + 8, + 382 + ], + [ + 172, + 510, + 8, + 776 + ], + [ + 173, + 504, + 8, + 240 + ], + [ + 173, + 511, + 8, + 776 + ], + [ + 173, + 512, + 8, + 776 + ], + [ + 174, + 509, + 8, + 438 + ], + [ + 174, + 513, + 8, + 776 + ], + [ + 174, + 514, + 8, + 578 + ], + [ + 175, + 517, + 8, + 621 + ], + [ + 175, + 518, + 8, + 395 + ], + [ + 175, + 519, + 8, + 776 + ], + [ + 176, + 515, + 8, + 635 + ], + [ + 176, + 518, + 8, + 381 + ], + [ + 176, + 520, + 8, + 776 + ], + [ + 177, + 517, + 8, + 155 + ], + [ + 177, + 521, + 8, + 776 + ], + [ + 177, + 522, + 8, + 776 + ], + [ + 177, + 523, + 8, + 85 + ], + [ + 178, + 516, + 8, + 773 + ], + [ + 178, + 523, + 8, + 243 + ], + [ + 178, + 524, + 8, + 776 + ], + [ + 179, + 528, + 8, + 240 + ], + [ + 179, + 529, + 8, + 776 + ], + [ + 179, + 531, + 8, + 776 + ], + [ + 180, + 526, + 8, + 240 + ], + [ + 180, + 530, + 8, + 776 + ], + [ + 180, + 532, + 8, + 776 + ], + [ + 181, + 533, + 8, + 480 + ], + [ + 181, + 535, + 8, + 776 + ], + [ + 181, + 536, + 8, + 536 + ], + [ + 182, + 536, + 8, + 240 + ], + [ + 182, + 537, + 8, + 776 + ], + [ + 182, + 538, + 8, + 776 + ], + [ + 183, + 0, + 7, + 248 + ], + [ + 183, + 0, + 8, + 776 + ], + [ + 183, + 0, + 9, + 184 + ], + [ + 183, + 2, + 9, + 293 + ], + [ + 183, + 3, + 8, + 776 + ], + [ + 183, + 4, + 8, + 302 + ], + [ + 183, + 5, + 7, + 229 + ], + [ + 183, + 5, + 8, + 776 + ], + [ + 184, + 0, + 7, + 3 + ], + [ + 184, + 1, + 8, + 776 + ], + [ + 184, + 2, + 8, + 776 + ], + [ + 184, + 4, + 8, + 474 + ], + [ + 184, + 6, + 8, + 776 + ], + [ + 184, + 6, + 9, + 3 + ], + [ + 184, + 7, + 8, + 776 + ], + [ + 185, + 2, + 7, + 416 + ], + [ + 185, + 3, + 7, + 416 + ], + [ + 185, + 4, + 9, + 1019 + ], + [ + 185, + 5, + 7, + 187 + ], + [ + 185, + 8, + 8, + 776 + ], + [ + 185, + 9, + 8, + 770 + ], + [ + 186, + 0, + 7, + 165 + ], + [ + 186, + 1, + 7, + 416 + ], + [ + 186, + 5, + 9, + 1704 + ], + [ + 186, + 7, + 7, + 91 + ], + [ + 186, + 7, + 9, + 88 + ], + [ + 186, + 8, + 7, + 416 + ], + [ + 186, + 9, + 7, + 288 + ], + [ + 186, + 11, + 7, + 416 + ], + [ + 187, + 6, + 7, + 416 + ], + [ + 187, + 6, + 9, + 26 + ], + [ + 187, + 7, + 7, + 325 + ], + [ + 187, + 8, + 9, + 1704 + ], + [ + 187, + 10, + 7, + 416 + ], + [ + 187, + 12, + 7, + 416 + ], + [ + 187, + 12, + 9, + 62 + ], + [ + 187, + 13, + 7, + 219 + ], + [ + 188, + 4, + 7, + 416 + ], + [ + 188, + 4, + 9, + 566 + ], + [ + 188, + 9, + 7, + 128 + ], + [ + 188, + 12, + 9, + 1226 + ], + [ + 188, + 14, + 7, + 416 + ], + [ + 188, + 15, + 7, + 416 + ], + [ + 188, + 16, + 7, + 416 + ], + [ + 189, + 0, + 9, + 904 + ], + [ + 189, + 16, + 8, + 776 + ], + [ + 189, + 17, + 7, + 72 + ], + [ + 189, + 18, + 7, + 416 + ], + [ + 189, + 18, + 8, + 224 + ], + [ + 189, + 19, + 7, + 416 + ], + [ + 189, + 19, + 8, + 776 + ], + [ + 190, + 1, + 9, + 120 + ], + [ + 190, + 13, + 7, + 197 + ], + [ + 190, + 15, + 9, + 293 + ], + [ + 190, + 17, + 7, + 344 + ], + [ + 190, + 20, + 7, + 416 + ], + [ + 190, + 20, + 9, + 1376 + ], + [ + 190, + 21, + 7, + 416 + ], + [ + 190, + 22, + 7, + 416 + ], + [ + 190, + 22, + 8, + 6 + ], + [ + 191, + 6, + 9, + 195 + ], + [ + 191, + 11, + 8, + 536 + ], + [ + 191, + 18, + 8, + 318 + ], + [ + 191, + 20, + 8, + 776 + ], + [ + 191, + 21, + 8, + 290 + ], + [ + 191, + 23, + 8, + 776 + ], + [ + 191, + 25, + 7, + 195 + ], + [ + 191, + 25, + 8, + 498 + ], + [ + 192, + 12, + 9, + 416 + ], + [ + 192, + 24, + 7, + 323 + ], + [ + 192, + 25, + 7, + 221 + ], + [ + 192, + 26, + 7, + 416 + ], + [ + 192, + 26, + 9, + 1376 + ], + [ + 192, + 27, + 7, + 416 + ], + [ + 192, + 28, + 7, + 416 + ], + [ + 193, + 9, + 9, + 88 + ], + [ + 193, + 23, + 7, + 416 + ], + [ + 193, + 24, + 9, + 1704 + ], + [ + 193, + 29, + 7, + 416 + ], + [ + 193, + 30, + 7, + 416 + ], + [ + 193, + 31, + 7, + 416 + ], + [ + 193, + 32, + 7, + 128 + ], + [ + 194, + 17, + 9, + 1704 + ], + [ + 194, + 24, + 7, + 93 + ], + [ + 194, + 32, + 7, + 288 + ], + [ + 194, + 33, + 7, + 163 + ], + [ + 194, + 34, + 7, + 416 + ], + [ + 194, + 35, + 7, + 416 + ], + [ + 194, + 35, + 9, + 88 + ], + [ + 194, + 36, + 7, + 416 + ], + [ + 195, + 19, + 9, + 1704 + ], + [ + 195, + 33, + 7, + 253 + ], + [ + 195, + 34, + 9, + 88 + ], + [ + 195, + 37, + 7, + 416 + ], + [ + 195, + 38, + 7, + 416 + ], + [ + 195, + 39, + 7, + 291 + ], + [ + 195, + 40, + 7, + 416 + ], + [ + 196, + 14, + 9, + 1704 + ], + [ + 196, + 34, + 9, + 85 + ], + [ + 196, + 38, + 8, + 6 + ], + [ + 196, + 39, + 7, + 125 + ], + [ + 196, + 41, + 7, + 416 + ], + [ + 196, + 42, + 7, + 416 + ], + [ + 196, + 43, + 7, + 416 + ], + [ + 196, + 44, + 7, + 416 + ], + [ + 197, + 38, + 9, + 128 + ], + [ + 197, + 45, + 7, + 416 + ], + [ + 197, + 46, + 7, + 416 + ], + [ + 197, + 47, + 7, + 128 + ], + [ + 197, + 47, + 9, + 1664 + ], + [ + 197, + 48, + 7, + 416 + ], + [ + 197, + 49, + 7, + 416 + ], + [ + 198, + 39, + 9, + 410 + ], + [ + 198, + 50, + 7, + 416 + ], + [ + 198, + 51, + 7, + 410 + ], + [ + 198, + 51, + 9, + 1382 + ], + [ + 198, + 52, + 7, + 134 + ], + [ + 198, + 53, + 7, + 416 + ], + [ + 198, + 54, + 7, + 416 + ], + [ + 199, + 31, + 9, + 1704 + ], + [ + 199, + 47, + 7, + 288 + ], + [ + 199, + 52, + 7, + 256 + ], + [ + 199, + 54, + 9, + 88 + ], + [ + 199, + 56, + 7, + 416 + ], + [ + 199, + 58, + 7, + 416 + ], + [ + 199, + 59, + 7, + 416 + ], + [ + 200, + 48, + 9, + 1704 + ], + [ + 200, + 52, + 7, + 26 + ], + [ + 200, + 57, + 7, + 102 + ], + [ + 200, + 58, + 9, + 88 + ], + [ + 200, + 61, + 7, + 416 + ], + [ + 200, + 62, + 7, + 416 + ], + [ + 200, + 63, + 7, + 416 + ], + [ + 200, + 64, + 7, + 416 + ], + [ + 201, + 49, + 9, + 1238 + ], + [ + 201, + 61, + 9, + 554 + ], + [ + 201, + 65, + 7, + 416 + ], + [ + 201, + 66, + 7, + 416 + ], + [ + 201, + 67, + 7, + 416 + ], + [ + 201, + 68, + 7, + 416 + ], + [ + 201, + 69, + 7, + 128 + ], + [ + 202, + 34, + 9, + 88 + ], + [ + 202, + 69, + 7, + 288 + ], + [ + 202, + 70, + 7, + 416 + ], + [ + 202, + 71, + 7, + 168 + ], + [ + 202, + 72, + 7, + 416 + ], + [ + 202, + 73, + 7, + 416 + ], + [ + 202, + 75, + 7, + 88 + ], + [ + 202, + 75, + 9, + 1704 + ], + [ + 203, + 49, + 9, + 88 + ], + [ + 203, + 56, + 9, + 1704 + ], + [ + 203, + 75, + 7, + 322 + ], + [ + 203, + 76, + 7, + 250 + ], + [ + 203, + 77, + 7, + 416 + ], + [ + 203, + 79, + 7, + 388 + ], + [ + 203, + 80, + 7, + 416 + ], + [ + 204, + 67, + 9, + 410 + ], + [ + 204, + 74, + 7, + 134 + ], + [ + 204, + 78, + 7, + 416 + ], + [ + 204, + 83, + 7, + 416 + ], + [ + 204, + 84, + 7, + 416 + ], + [ + 204, + 85, + 7, + 410 + ], + [ + 204, + 85, + 9, + 1382 + ], + [ + 205, + 33, + 9, + 88 + ], + [ + 205, + 51, + 7, + 6 + ], + [ + 205, + 63, + 9, + 1704 + ], + [ + 205, + 76, + 7, + 166 + ], + [ + 205, + 87, + 7, + 372 + ], + [ + 205, + 88, + 7, + 416 + ], + [ + 205, + 89, + 7, + 416 + ], + [ + 205, + 92, + 7, + 416 + ], + [ + 206, + 35, + 9, + 1616 + ], + [ + 206, + 81, + 7, + 416 + ], + [ + 206, + 82, + 7, + 416 + ], + [ + 206, + 86, + 9, + 176 + ], + [ + 206, + 90, + 7, + 26 + ], + [ + 206, + 93, + 7, + 416 + ], + [ + 206, + 98, + 7, + 102 + ], + [ + 206, + 99, + 7, + 416 + ], + [ + 207, + 58, + 9, + 1616 + ], + [ + 207, + 78, + 9, + 176 + ], + [ + 207, + 87, + 7, + 44 + ], + [ + 207, + 91, + 7, + 288 + ], + [ + 207, + 94, + 7, + 212 + ], + [ + 207, + 97, + 7, + 416 + ], + [ + 207, + 100, + 7, + 416 + ], + [ + 207, + 104, + 7, + 416 + ], + [ + 208, + 52, + 9, + 56 + ], + [ + 208, + 67, + 9, + 1294 + ], + [ + 208, + 94, + 7, + 204 + ], + [ + 208, + 96, + 7, + 416 + ], + [ + 208, + 102, + 7, + 416 + ], + [ + 208, + 105, + 7, + 416 + ], + [ + 208, + 109, + 7, + 340 + ], + [ + 208, + 111, + 9, + 442 + ], + [ + 209, + 86, + 7, + 410 + ], + [ + 209, + 90, + 7, + 390 + ], + [ + 209, + 100, + 9, + 1453 + ], + [ + 209, + 106, + 7, + 416 + ], + [ + 209, + 110, + 9, + 339 + ], + [ + 209, + 112, + 7, + 160 + ], + [ + 209, + 115, + 7, + 416 + ], + [ + 210, + 45, + 9, + 164 + ], + [ + 210, + 95, + 7, + 416 + ], + [ + 210, + 103, + 9, + 1628 + ], + [ + 210, + 107, + 7, + 416 + ], + [ + 210, + 109, + 7, + 76 + ], + [ + 210, + 120, + 7, + 416 + ], + [ + 210, + 121, + 7, + 52 + ], + [ + 210, + 122, + 7, + 416 + ], + [ + 211, + 98, + 7, + 314 + ], + [ + 211, + 113, + 9, + 88 + ], + [ + 211, + 116, + 7, + 416 + ], + [ + 211, + 121, + 7, + 358 + ], + [ + 211, + 123, + 7, + 288 + ], + [ + 211, + 127, + 9, + 1704 + ], + [ + 211, + 130, + 7, + 416 + ], + [ + 212, + 74, + 7, + 282 + ], + [ + 212, + 79, + 7, + 28 + ], + [ + 212, + 101, + 7, + 416 + ], + [ + 212, + 110, + 7, + 416 + ], + [ + 212, + 111, + 7, + 416 + ], + [ + 212, + 121, + 9, + 88 + ], + [ + 212, + 136, + 7, + 234 + ], + [ + 212, + 138, + 9, + 1704 + ], + [ + 213, + 98, + 9, + 88 + ], + [ + 213, + 103, + 7, + 416 + ], + [ + 213, + 135, + 9, + 1704 + ], + [ + 213, + 137, + 7, + 416 + ], + [ + 213, + 146, + 7, + 388 + ], + [ + 213, + 147, + 7, + 416 + ], + [ + 213, + 150, + 7, + 156 + ], + [ + 214, + 10, + 9, + 1055 + ], + [ + 214, + 64, + 9, + 737 + ], + [ + 214, + 133, + 7, + 350 + ], + [ + 214, + 140, + 7, + 194 + ], + [ + 214, + 141, + 7, + 416 + ], + [ + 214, + 154, + 7, + 416 + ], + [ + 214, + 159, + 7, + 416 + ], + [ + 215, + 123, + 9, + 1704 + ], + [ + 215, + 139, + 7, + 416 + ], + [ + 215, + 144, + 9, + 88 + ], + [ + 215, + 151, + 7, + 416 + ], + [ + 215, + 155, + 7, + 416 + ], + [ + 215, + 160, + 7, + 128 + ], + [ + 215, + 167, + 7, + 416 + ], + [ + 216, + 109, + 9, + 1704 + ], + [ + 216, + 112, + 7, + 256 + ], + [ + 216, + 134, + 7, + 416 + ], + [ + 216, + 153, + 9, + 88 + ], + [ + 216, + 162, + 7, + 416 + ], + [ + 216, + 165, + 7, + 416 + ], + [ + 216, + 168, + 7, + 288 + ], + [ + 217, + 40, + 9, + 1704 + ], + [ + 217, + 123, + 7, + 128 + ], + [ + 217, + 127, + 7, + 416 + ], + [ + 217, + 128, + 7, + 416 + ], + [ + 217, + 132, + 7, + 416 + ], + [ + 217, + 144, + 9, + 88 + ], + [ + 217, + 177, + 7, + 416 + ], + [ + 218, + 91, + 7, + 128 + ], + [ + 218, + 100, + 9, + 88 + ], + [ + 218, + 107, + 9, + 1704 + ], + [ + 218, + 173, + 7, + 416 + ], + [ + 218, + 180, + 7, + 416 + ], + [ + 218, + 182, + 7, + 416 + ], + [ + 218, + 187, + 7, + 416 + ], + [ + 219, + 117, + 7, + 416 + ], + [ + 219, + 171, + 9, + 1704 + ], + [ + 219, + 185, + 7, + 246 + ], + [ + 219, + 193, + 7, + 298 + ], + [ + 219, + 195, + 7, + 416 + ], + [ + 219, + 196, + 9, + 88 + ], + [ + 219, + 198, + 7, + 416 + ], + [ + 220, + 191, + 7, + 416 + ], + [ + 220, + 217, + 7, + 416 + ], + [ + 220, + 228, + 7, + 38 + ], + [ + 220, + 242, + 7, + 23 + ], + [ + 220, + 332, + 9, + 1097 + ], + [ + 220, + 333, + 7, + 67 + ], + [ + 220, + 333, + 9, + 695 + ], + [ + 220, + 334, + 7, + 416 + ], + [ + 220, + 335, + 7, + 416 + ], + [ + 221, + 176, + 7, + 64 + ], + [ + 221, + 208, + 9, + 1640 + ], + [ + 221, + 211, + 7, + 416 + ], + [ + 221, + 263, + 7, + 416 + ], + [ + 221, + 333, + 7, + 349 + ], + [ + 221, + 336, + 7, + 416 + ], + [ + 221, + 336, + 9, + 56 + ], + [ + 221, + 337, + 7, + 35 + ], + [ + 221, + 337, + 8, + 192 + ], + [ + 222, + 312, + 9, + 413 + ], + [ + 222, + 333, + 8, + 6 + ], + [ + 222, + 337, + 7, + 381 + ], + [ + 222, + 338, + 7, + 288 + ], + [ + 222, + 339, + 7, + 416 + ], + [ + 222, + 340, + 7, + 288 + ], + [ + 222, + 341, + 7, + 416 + ], + [ + 222, + 341, + 9, + 1376 + ], + [ + 223, + 334, + 9, + 128 + ], + [ + 223, + 338, + 7, + 128 + ], + [ + 223, + 338, + 9, + 1664 + ], + [ + 223, + 342, + 7, + 416 + ], + [ + 223, + 343, + 7, + 416 + ], + [ + 223, + 344, + 7, + 416 + ], + [ + 223, + 345, + 7, + 416 + ], + [ + 224, + 312, + 9, + 1291 + ], + [ + 224, + 340, + 7, + 128 + ], + [ + 224, + 345, + 9, + 501 + ], + [ + 224, + 346, + 7, + 416 + ], + [ + 224, + 347, + 7, + 416 + ], + [ + 224, + 348, + 7, + 416 + ], + [ + 224, + 349, + 7, + 416 + ], + [ + 225, + 337, + 9, + 1525 + ], + [ + 225, + 350, + 7, + 128 + ], + [ + 225, + 351, + 7, + 416 + ], + [ + 225, + 352, + 7, + 416 + ], + [ + 225, + 353, + 7, + 416 + ], + [ + 225, + 354, + 7, + 416 + ], + [ + 225, + 354, + 9, + 267 + ], + [ + 226, + 345, + 9, + 88 + ], + [ + 226, + 350, + 7, + 288 + ], + [ + 226, + 356, + 7, + 416 + ], + [ + 226, + 357, + 7, + 416 + ], + [ + 226, + 358, + 7, + 416 + ], + [ + 226, + 359, + 7, + 256 + ], + [ + 226, + 360, + 9, + 1704 + ], + [ + 227, + 353, + 9, + 1647 + ], + [ + 227, + 355, + 7, + 416 + ], + [ + 227, + 357, + 9, + 145 + ], + [ + 227, + 361, + 7, + 84 + ], + [ + 227, + 362, + 7, + 416 + ], + [ + 227, + 366, + 7, + 416 + ], + [ + 227, + 367, + 7, + 416 + ], + [ + 227, + 368, + 7, + 44 + ], + [ + 228, + 368, + 7, + 372 + ], + [ + 228, + 369, + 7, + 416 + ], + [ + 228, + 377, + 7, + 32 + ], + [ + 228, + 380, + 7, + 160 + ], + [ + 228, + 405, + 9, + 1534 + ], + [ + 228, + 406, + 7, + 396 + ], + [ + 228, + 408, + 7, + 416 + ], + [ + 228, + 408, + 9, + 258 + ], + [ + 229, + 363, + 7, + 416 + ], + [ + 229, + 372, + 7, + 416 + ], + [ + 229, + 405, + 7, + 236 + ], + [ + 229, + 406, + 9, + 88 + ], + [ + 229, + 407, + 9, + 1704 + ], + [ + 229, + 409, + 7, + 416 + ], + [ + 229, + 410, + 7, + 308 + ], + [ + 230, + 342, + 9, + 1616 + ], + [ + 230, + 343, + 9, + 120 + ], + [ + 230, + 384, + 7, + 416 + ], + [ + 230, + 406, + 7, + 20 + ], + [ + 230, + 407, + 7, + 416 + ], + [ + 230, + 410, + 7, + 108 + ], + [ + 230, + 412, + 7, + 416 + ], + [ + 230, + 412, + 9, + 56 + ], + [ + 230, + 413, + 7, + 416 + ], + [ + 231, + 406, + 8, + 776 + ], + [ + 231, + 407, + 8, + 776 + ], + [ + 231, + 408, + 8, + 407 + ], + [ + 231, + 408, + 9, + 23 + ], + [ + 231, + 409, + 8, + 776 + ], + [ + 231, + 413, + 8, + 776 + ], + [ + 231, + 414, + 7, + 23 + ], + [ + 231, + 414, + 8, + 27 + ], + [ + 232, + 389, + 9, + 279 + ], + [ + 232, + 402, + 9, + 1513 + ], + [ + 232, + 414, + 7, + 393 + ], + [ + 232, + 416, + 7, + 151 + ], + [ + 232, + 417, + 7, + 416 + ], + [ + 232, + 418, + 7, + 416 + ], + [ + 232, + 419, + 7, + 416 + ], + [ + 233, + 365, + 7, + 102 + ], + [ + 233, + 391, + 9, + 270 + ], + [ + 233, + 405, + 7, + 180 + ], + [ + 233, + 406, + 9, + 1440 + ], + [ + 233, + 411, + 7, + 416 + ], + [ + 233, + 411, + 9, + 82 + ], + [ + 233, + 415, + 7, + 416 + ], + [ + 233, + 416, + 7, + 262 + ], + [ + 233, + 420, + 7, + 416 + ], + [ + 234, + 391, + 9, + 1434 + ], + [ + 234, + 402, + 9, + 47 + ], + [ + 234, + 421, + 7, + 416 + ], + [ + 234, + 425, + 7, + 291 + ], + [ + 234, + 426, + 7, + 416 + ], + [ + 234, + 426, + 8, + 506 + ], + [ + 234, + 427, + 7, + 416 + ], + [ + 234, + 427, + 9, + 58 + ], + [ + 235, + 405, + 9, + 170 + ], + [ + 235, + 411, + 9, + 1622 + ], + [ + 235, + 416, + 7, + 3 + ], + [ + 235, + 422, + 7, + 416 + ], + [ + 235, + 423, + 7, + 416 + ], + [ + 235, + 424, + 7, + 416 + ], + [ + 235, + 425, + 7, + 125 + ], + [ + 235, + 428, + 7, + 416 + ], + [ + 236, + 409, + 9, + 1704 + ], + [ + 236, + 430, + 7, + 416 + ], + [ + 236, + 432, + 7, + 256 + ], + [ + 236, + 432, + 9, + 88 + ], + [ + 236, + 433, + 7, + 416 + ], + [ + 236, + 434, + 7, + 288 + ], + [ + 236, + 436, + 7, + 416 + ], + [ + 237, + 406, + 9, + 176 + ], + [ + 237, + 429, + 7, + 416 + ], + [ + 237, + 431, + 7, + 416 + ], + [ + 237, + 432, + 9, + 1616 + ], + [ + 237, + 434, + 7, + 128 + ], + [ + 237, + 437, + 7, + 416 + ], + [ + 237, + 438, + 7, + 416 + ], + [ + 238, + 420, + 9, + 1229 + ], + [ + 238, + 441, + 7, + 416 + ], + [ + 238, + 444, + 7, + 416 + ], + [ + 238, + 446, + 7, + 282 + ], + [ + 238, + 446, + 9, + 563 + ], + [ + 238, + 448, + 7, + 416 + ], + [ + 238, + 449, + 7, + 262 + ], + [ + 239, + 439, + 7, + 416 + ], + [ + 239, + 440, + 7, + 416 + ], + [ + 239, + 442, + 7, + 410 + ], + [ + 239, + 443, + 9, + 88 + ], + [ + 239, + 444, + 9, + 1704 + ], + [ + 239, + 445, + 7, + 416 + ], + [ + 239, + 446, + 7, + 134 + ], + [ + 240, + 426, + 9, + 850 + ], + [ + 240, + 447, + 9, + 942 + ], + [ + 240, + 454, + 7, + 416 + ], + [ + 240, + 457, + 7, + 416 + ], + [ + 240, + 459, + 7, + 416 + ], + [ + 240, + 460, + 7, + 416 + ], + [ + 240, + 462, + 7, + 128 + ], + [ + 241, + 410, + 9, + 88 + ], + [ + 241, + 451, + 9, + 1704 + ], + [ + 241, + 455, + 7, + 256 + ], + [ + 241, + 456, + 7, + 416 + ], + [ + 241, + 461, + 7, + 416 + ], + [ + 241, + 462, + 7, + 288 + ], + [ + 241, + 463, + 7, + 416 + ], + [ + 242, + 434, + 9, + 621 + ], + [ + 242, + 455, + 7, + 160 + ], + [ + 242, + 455, + 9, + 1171 + ], + [ + 242, + 458, + 7, + 416 + ], + [ + 242, + 469, + 7, + 416 + ], + [ + 242, + 470, + 7, + 384 + ], + [ + 242, + 475, + 7, + 416 + ], + [ + 243, + 443, + 9, + 1616 + ], + [ + 243, + 450, + 9, + 176 + ], + [ + 243, + 467, + 7, + 96 + ], + [ + 243, + 470, + 7, + 32 + ], + [ + 243, + 471, + 7, + 416 + ], + [ + 243, + 472, + 7, + 416 + ], + [ + 243, + 473, + 7, + 416 + ], + [ + 243, + 474, + 7, + 416 + ], + [ + 244, + 114, + 7, + 416 + ], + [ + 244, + 126, + 7, + 416 + ], + [ + 244, + 131, + 7, + 416 + ], + [ + 244, + 148, + 9, + 88 + ], + [ + 244, + 161, + 7, + 416 + ], + [ + 244, + 165, + 9, + 1704 + ], + [ + 244, + 169, + 7, + 128 + ], + [ + 245, + 118, + 7, + 416 + ], + [ + 245, + 148, + 9, + 88 + ], + [ + 245, + 156, + 7, + 416 + ], + [ + 245, + 157, + 7, + 416 + ], + [ + 245, + 163, + 9, + 1704 + ], + [ + 245, + 164, + 7, + 416 + ], + [ + 245, + 168, + 7, + 128 + ], + [ + 246, + 125, + 9, + 1674 + ], + [ + 246, + 126, + 9, + 118 + ], + [ + 246, + 153, + 7, + 416 + ], + [ + 246, + 160, + 7, + 288 + ], + [ + 246, + 169, + 7, + 288 + ], + [ + 246, + 175, + 7, + 99 + ], + [ + 246, + 181, + 7, + 416 + ], + [ + 246, + 183, + 7, + 285 + ], + [ + 247, + 129, + 7, + 416 + ], + [ + 247, + 136, + 7, + 182 + ], + [ + 247, + 141, + 9, + 103 + ], + [ + 247, + 172, + 7, + 224 + ], + [ + 247, + 175, + 7, + 103 + ], + [ + 247, + 175, + 9, + 1689 + ], + [ + 247, + 184, + 7, + 416 + ], + [ + 247, + 189, + 7, + 35 + ], + [ + 247, + 194, + 7, + 416 + ], + [ + 248, + 148, + 7, + 416 + ], + [ + 248, + 150, + 7, + 132 + ], + [ + 248, + 152, + 7, + 60 + ], + [ + 248, + 176, + 7, + 352 + ], + [ + 248, + 179, + 7, + 416 + ], + [ + 248, + 185, + 9, + 88 + ], + [ + 248, + 190, + 7, + 416 + ], + [ + 248, + 198, + 9, + 1704 + ], + [ + 249, + 149, + 7, + 416 + ], + [ + 249, + 150, + 7, + 128 + ], + [ + 249, + 166, + 7, + 416 + ], + [ + 249, + 174, + 9, + 1601 + ], + [ + 249, + 176, + 9, + 191 + ], + [ + 249, + 188, + 7, + 416 + ], + [ + 249, + 192, + 7, + 416 + ], + [ + 250, + 182, + 9, + 1704 + ], + [ + 250, + 197, + 7, + 416 + ], + [ + 250, + 203, + 7, + 416 + ], + [ + 250, + 212, + 7, + 416 + ], + [ + 250, + 213, + 7, + 416 + ], + [ + 250, + 216, + 7, + 128 + ], + [ + 250, + 216, + 9, + 88 + ], + [ + 251, + 171, + 7, + 416 + ], + [ + 251, + 176, + 9, + 88 + ], + [ + 251, + 179, + 9, + 1704 + ], + [ + 251, + 183, + 7, + 131 + ], + [ + 251, + 201, + 7, + 416 + ], + [ + 251, + 209, + 7, + 413 + ], + [ + 251, + 214, + 7, + 416 + ], + [ + 252, + 175, + 7, + 214 + ], + [ + 252, + 185, + 7, + 170 + ], + [ + 252, + 190, + 9, + 367 + ], + [ + 252, + 200, + 7, + 416 + ], + [ + 252, + 208, + 7, + 288 + ], + [ + 252, + 213, + 9, + 1425 + ], + [ + 252, + 216, + 7, + 288 + ], + [ + 252, + 223, + 7, + 416 + ], + [ + 253, + 174, + 9, + 103 + ], + [ + 253, + 196, + 7, + 416 + ], + [ + 253, + 208, + 7, + 128 + ], + [ + 253, + 210, + 7, + 416 + ], + [ + 253, + 215, + 7, + 416 + ], + [ + 253, + 224, + 7, + 416 + ], + [ + 253, + 228, + 9, + 1689 + ], + [ + 254, + 185, + 9, + 646 + ], + [ + 254, + 186, + 7, + 416 + ], + [ + 254, + 188, + 9, + 1146 + ], + [ + 254, + 189, + 7, + 381 + ], + [ + 254, + 218, + 7, + 288 + ], + [ + 254, + 219, + 7, + 416 + ], + [ + 254, + 222, + 7, + 291 + ], + [ + 255, + 207, + 7, + 416 + ], + [ + 255, + 210, + 9, + 88 + ], + [ + 255, + 220, + 7, + 416 + ], + [ + 255, + 221, + 9, + 1704 + ], + [ + 255, + 229, + 7, + 288 + ], + [ + 255, + 230, + 7, + 416 + ], + [ + 255, + 242, + 7, + 256 + ], + [ + 256, + 206, + 7, + 416 + ], + [ + 256, + 209, + 7, + 3 + ], + [ + 256, + 222, + 7, + 125 + ], + [ + 256, + 225, + 7, + 416 + ], + [ + 256, + 227, + 7, + 416 + ], + [ + 256, + 231, + 7, + 416 + ], + [ + 256, + 233, + 9, + 1689 + ], + [ + 256, + 249, + 9, + 103 + ], + [ + 257, + 204, + 7, + 410 + ], + [ + 257, + 205, + 7, + 326 + ], + [ + 257, + 219, + 9, + 449 + ], + [ + 257, + 224, + 9, + 1343 + ], + [ + 257, + 226, + 7, + 224 + ], + [ + 257, + 238, + 7, + 416 + ], + [ + 257, + 243, + 7, + 416 + ], + [ + 258, + 229, + 7, + 128 + ], + [ + 258, + 233, + 7, + 416 + ], + [ + 258, + 239, + 7, + 416 + ], + [ + 258, + 244, + 7, + 416 + ], + [ + 258, + 244, + 9, + 1301 + ], + [ + 258, + 252, + 7, + 416 + ], + [ + 258, + 253, + 9, + 117 + ], + [ + 258, + 255, + 9, + 374 + ], + [ + 259, + 218, + 7, + 128 + ], + [ + 259, + 219, + 9, + 1255 + ], + [ + 259, + 232, + 7, + 416 + ], + [ + 259, + 241, + 7, + 416 + ], + [ + 259, + 245, + 7, + 416 + ], + [ + 259, + 255, + 7, + 416 + ], + [ + 259, + 270, + 9, + 537 + ], + [ + 260, + 226, + 7, + 192 + ], + [ + 260, + 234, + 7, + 416 + ], + [ + 260, + 235, + 7, + 416 + ], + [ + 260, + 246, + 7, + 88 + ], + [ + 260, + 246, + 9, + 1704 + ], + [ + 260, + 251, + 7, + 264 + ], + [ + 260, + 254, + 7, + 416 + ], + [ + 260, + 276, + 9, + 88 + ], + [ + 261, + 236, + 7, + 416 + ], + [ + 261, + 237, + 7, + 416 + ], + [ + 261, + 240, + 7, + 410 + ], + [ + 261, + 248, + 7, + 110 + ], + [ + 261, + 249, + 9, + 88 + ], + [ + 261, + 251, + 7, + 152 + ], + [ + 261, + 264, + 7, + 288 + ], + [ + 261, + 272, + 9, + 1704 + ], + [ + 262, + 242, + 7, + 137 + ], + [ + 262, + 246, + 7, + 328 + ], + [ + 262, + 247, + 7, + 416 + ], + [ + 262, + 248, + 7, + 79 + ], + [ + 262, + 257, + 7, + 416 + ], + [ + 262, + 267, + 9, + 1704 + ], + [ + 262, + 277, + 7, + 416 + ], + [ + 262, + 284, + 9, + 88 + ], + [ + 263, + 248, + 7, + 227 + ], + [ + 263, + 253, + 7, + 416 + ], + [ + 263, + 256, + 7, + 416 + ], + [ + 263, + 256, + 9, + 88 + ], + [ + 263, + 261, + 7, + 317 + ], + [ + 263, + 276, + 7, + 416 + ], + [ + 263, + 288, + 9, + 1704 + ], + [ + 264, + 249, + 7, + 416 + ], + [ + 264, + 250, + 7, + 416 + ], + [ + 264, + 254, + 9, + 88 + ], + [ + 264, + 259, + 7, + 416 + ], + [ + 264, + 264, + 7, + 128 + ], + [ + 264, + 269, + 7, + 416 + ], + [ + 264, + 283, + 9, + 1704 + ], + [ + 265, + 256, + 9, + 1616 + ], + [ + 265, + 258, + 7, + 416 + ], + [ + 265, + 260, + 7, + 416 + ], + [ + 265, + 261, + 7, + 99 + ], + [ + 265, + 262, + 7, + 416 + ], + [ + 265, + 267, + 7, + 29 + ], + [ + 265, + 275, + 7, + 416 + ], + [ + 265, + 297, + 9, + 176 + ], + [ + 266, + 265, + 7, + 416 + ], + [ + 266, + 267, + 7, + 387 + ], + [ + 266, + 268, + 7, + 416 + ], + [ + 266, + 274, + 7, + 416 + ], + [ + 266, + 280, + 7, + 157 + ], + [ + 266, + 289, + 9, + 1464 + ], + [ + 266, + 298, + 9, + 328 + ], + [ + 267, + 266, + 7, + 416 + ], + [ + 267, + 270, + 7, + 416 + ], + [ + 267, + 280, + 7, + 131 + ], + [ + 267, + 281, + 7, + 185 + ], + [ + 267, + 285, + 7, + 416 + ], + [ + 267, + 291, + 7, + 228 + ], + [ + 267, + 295, + 9, + 176 + ], + [ + 267, + 299, + 9, + 1616 + ], + [ + 268, + 271, + 7, + 416 + ], + [ + 268, + 272, + 7, + 416 + ], + [ + 268, + 273, + 7, + 416 + ], + [ + 268, + 278, + 7, + 416 + ], + [ + 268, + 287, + 7, + 128 + ], + [ + 268, + 296, + 9, + 1466 + ], + [ + 268, + 306, + 9, + 326 + ], + [ + 269, + 279, + 7, + 416 + ], + [ + 269, + 280, + 7, + 128 + ], + [ + 269, + 282, + 7, + 416 + ], + [ + 269, + 284, + 7, + 416 + ], + [ + 269, + 287, + 9, + 1704 + ], + [ + 269, + 294, + 7, + 416 + ], + [ + 269, + 299, + 9, + 88 + ], + [ + 270, + 281, + 7, + 231 + ], + [ + 270, + 283, + 7, + 416 + ], + [ + 270, + 286, + 7, + 416 + ], + [ + 270, + 286, + 9, + 416 + ], + [ + 270, + 292, + 7, + 416 + ], + [ + 270, + 292, + 9, + 1376 + ], + [ + 270, + 303, + 7, + 313 + ], + [ + 271, + 287, + 7, + 288 + ], + [ + 271, + 288, + 7, + 416 + ], + [ + 271, + 289, + 7, + 416 + ], + [ + 271, + 291, + 7, + 188 + ], + [ + 271, + 293, + 7, + 68 + ], + [ + 271, + 297, + 7, + 416 + ], + [ + 271, + 297, + 9, + 88 + ], + [ + 271, + 308, + 9, + 1704 + ], + [ + 272, + 290, + 7, + 416 + ], + [ + 272, + 293, + 7, + 348 + ], + [ + 272, + 300, + 7, + 416 + ], + [ + 272, + 306, + 7, + 416 + ], + [ + 272, + 311, + 9, + 1596 + ], + [ + 272, + 320, + 8, + 392 + ], + [ + 273, + 295, + 7, + 416 + ], + [ + 273, + 296, + 7, + 416 + ], + [ + 273, + 297, + 9, + 88 + ], + [ + 273, + 299, + 7, + 416 + ], + [ + 273, + 304, + 7, + 416 + ], + [ + 273, + 305, + 7, + 128 + ], + [ + 273, + 318, + 9, + 1704 + ], + [ + 274, + 298, + 7, + 416 + ], + [ + 274, + 298, + 9, + 1376 + ], + [ + 274, + 301, + 7, + 416 + ], + [ + 274, + 302, + 7, + 416 + ], + [ + 274, + 302, + 9, + 416 + ], + [ + 274, + 307, + 7, + 128 + ], + [ + 274, + 308, + 7, + 416 + ], + [ + 275, + 303, + 7, + 103 + ], + [ + 275, + 303, + 9, + 1464 + ], + [ + 275, + 305, + 7, + 288 + ], + [ + 275, + 309, + 7, + 160 + ], + [ + 275, + 311, + 7, + 416 + ], + [ + 275, + 318, + 7, + 416 + ], + [ + 275, + 321, + 7, + 409 + ], + [ + 275, + 326, + 9, + 328 + ], + [ + 276, + 306, + 9, + 219 + ], + [ + 276, + 307, + 7, + 288 + ], + [ + 276, + 310, + 7, + 416 + ], + [ + 276, + 312, + 7, + 256 + ], + [ + 276, + 316, + 9, + 197 + ], + [ + 276, + 317, + 7, + 416 + ], + [ + 276, + 326, + 7, + 416 + ], + [ + 276, + 326, + 9, + 1376 + ], + [ + 277, + 309, + 7, + 256 + ], + [ + 277, + 313, + 7, + 416 + ], + [ + 277, + 313, + 9, + 160 + ], + [ + 277, + 316, + 7, + 416 + ], + [ + 277, + 320, + 7, + 288 + ], + [ + 277, + 325, + 9, + 1631 + ], + [ + 277, + 328, + 7, + 416 + ], + [ + 277, + 328, + 9, + 1 + ], + [ + 278, + 312, + 7, + 160 + ], + [ + 278, + 314, + 7, + 416 + ], + [ + 278, + 314, + 9, + 1376 + ], + [ + 278, + 319, + 7, + 416 + ], + [ + 278, + 322, + 7, + 384 + ], + [ + 278, + 329, + 7, + 416 + ], + [ + 278, + 330, + 9, + 416 + ], + [ + 279, + 315, + 7, + 416 + ], + [ + 279, + 319, + 9, + 151 + ], + [ + 279, + 320, + 7, + 128 + ], + [ + 279, + 322, + 9, + 1641 + ], + [ + 279, + 323, + 7, + 416 + ], + [ + 279, + 324, + 7, + 416 + ], + [ + 279, + 327, + 7, + 416 + ], + [ + 280, + 321, + 7, + 7 + ], + [ + 280, + 322, + 7, + 32 + ], + [ + 280, + 325, + 7, + 416 + ], + [ + 280, + 328, + 9, + 1703 + ], + [ + 280, + 330, + 7, + 416 + ], + [ + 280, + 331, + 7, + 416 + ], + [ + 280, + 331, + 8, + 178 + ], + [ + 280, + 332, + 7, + 416 + ], + [ + 281, + 364, + 7, + 416 + ], + [ + 281, + 366, + 9, + 1704 + ], + [ + 281, + 370, + 7, + 416 + ], + [ + 281, + 370, + 9, + 88 + ], + [ + 281, + 371, + 7, + 416 + ], + [ + 281, + 374, + 7, + 128 + ], + [ + 281, + 376, + 7, + 416 + ], + [ + 282, + 370, + 9, + 1616 + ], + [ + 282, + 372, + 9, + 120 + ], + [ + 282, + 373, + 7, + 416 + ], + [ + 282, + 374, + 7, + 288 + ], + [ + 282, + 375, + 7, + 416 + ], + [ + 282, + 378, + 7, + 416 + ], + [ + 282, + 380, + 7, + 256 + ], + [ + 282, + 383, + 9, + 56 + ], + [ + 283, + 377, + 7, + 384 + ], + [ + 283, + 378, + 9, + 384 + ], + [ + 283, + 379, + 7, + 416 + ], + [ + 283, + 381, + 7, + 416 + ], + [ + 283, + 385, + 7, + 288 + ], + [ + 283, + 386, + 9, + 120 + ], + [ + 283, + 388, + 9, + 1288 + ], + [ + 283, + 389, + 7, + 288 + ], + [ + 284, + 382, + 7, + 416 + ], + [ + 284, + 383, + 7, + 416 + ], + [ + 284, + 385, + 7, + 128 + ], + [ + 284, + 386, + 7, + 416 + ], + [ + 284, + 387, + 7, + 416 + ], + [ + 284, + 387, + 9, + 1376 + ], + [ + 284, + 388, + 9, + 416 + ], + [ + 285, + 388, + 7, + 416 + ], + [ + 285, + 389, + 7, + 128 + ], + [ + 285, + 390, + 7, + 416 + ], + [ + 285, + 391, + 7, + 416 + ], + [ + 285, + 392, + 7, + 416 + ], + [ + 285, + 394, + 9, + 1704 + ], + [ + 285, + 395, + 9, + 88 + ], + [ + 286, + 393, + 7, + 416 + ], + [ + 286, + 394, + 7, + 416 + ], + [ + 286, + 395, + 7, + 416 + ], + [ + 286, + 396, + 7, + 416 + ], + [ + 286, + 399, + 7, + 128 + ], + [ + 286, + 400, + 9, + 1704 + ], + [ + 286, + 401, + 9, + 88 + ], + [ + 287, + 397, + 7, + 416 + ], + [ + 287, + 397, + 9, + 672 + ], + [ + 287, + 398, + 7, + 416 + ], + [ + 287, + 399, + 7, + 288 + ], + [ + 287, + 399, + 9, + 1120 + ], + [ + 287, + 402, + 7, + 256 + ], + [ + 287, + 403, + 7, + 416 + ], + [ + 288, + 400, + 7, + 416 + ], + [ + 288, + 401, + 7, + 416 + ], + [ + 288, + 402, + 7, + 160 + ], + [ + 288, + 403, + 9, + 800 + ], + [ + 288, + 404, + 7, + 416 + ], + [ + 288, + 404, + 8, + 768 + ], + [ + 288, + 404, + 9, + 608 + ], + [ + 289, + 473, + 9, + 345 + ], + [ + 289, + 476, + 7, + 416 + ], + [ + 289, + 484, + 7, + 416 + ], + [ + 289, + 485, + 9, + 1447 + ], + [ + 289, + 486, + 7, + 416 + ], + [ + 289, + 490, + 7, + 416 + ], + [ + 289, + 493, + 7, + 128 + ], + [ + 290, + 464, + 7, + 416 + ], + [ + 290, + 466, + 7, + 416 + ], + [ + 290, + 478, + 9, + 56 + ], + [ + 290, + 480, + 7, + 128 + ], + [ + 290, + 484, + 9, + 360 + ], + [ + 290, + 487, + 7, + 416 + ], + [ + 290, + 487, + 9, + 1376 + ], + [ + 290, + 492, + 7, + 416 + ], + [ + 291, + 477, + 9, + 757 + ], + [ + 291, + 480, + 7, + 288 + ], + [ + 291, + 481, + 7, + 416 + ], + [ + 291, + 485, + 7, + 256 + ], + [ + 291, + 495, + 7, + 416 + ], + [ + 291, + 498, + 9, + 1035 + ], + [ + 291, + 501, + 7, + 416 + ], + [ + 292, + 479, + 7, + 416 + ], + [ + 292, + 485, + 7, + 160 + ], + [ + 292, + 490, + 9, + 88 + ], + [ + 292, + 491, + 7, + 416 + ], + [ + 292, + 497, + 7, + 384 + ], + [ + 292, + 499, + 7, + 416 + ], + [ + 292, + 503, + 9, + 1704 + ], + [ + 293, + 489, + 7, + 416 + ], + [ + 293, + 493, + 7, + 128 + ], + [ + 293, + 494, + 7, + 416 + ], + [ + 293, + 500, + 7, + 416 + ], + [ + 293, + 510, + 7, + 416 + ], + [ + 293, + 515, + 9, + 1704 + ], + [ + 293, + 517, + 9, + 88 + ], + [ + 294, + 493, + 7, + 160 + ], + [ + 294, + 496, + 7, + 416 + ], + [ + 294, + 497, + 7, + 32 + ], + [ + 294, + 498, + 7, + 38 + ], + [ + 294, + 502, + 9, + 202 + ], + [ + 294, + 504, + 7, + 416 + ], + [ + 294, + 509, + 7, + 416 + ], + [ + 294, + 511, + 9, + 1590 + ], + [ + 294, + 518, + 7, + 314 + ], + [ + 295, + 502, + 7, + 416 + ], + [ + 295, + 506, + 7, + 416 + ], + [ + 295, + 507, + 7, + 128 + ], + [ + 295, + 508, + 7, + 416 + ], + [ + 295, + 511, + 7, + 416 + ], + [ + 295, + 511, + 9, + 114 + ], + [ + 295, + 513, + 9, + 62 + ], + [ + 295, + 517, + 9, + 1616 + ], + [ + 296, + 503, + 7, + 416 + ], + [ + 296, + 504, + 9, + 1704 + ], + [ + 296, + 507, + 7, + 288 + ], + [ + 296, + 512, + 7, + 416 + ], + [ + 296, + 513, + 7, + 416 + ], + [ + 296, + 522, + 7, + 256 + ], + [ + 296, + 525, + 9, + 88 + ], + [ + 297, + 514, + 7, + 416 + ], + [ + 297, + 516, + 7, + 416 + ], + [ + 297, + 518, + 7, + 102 + ], + [ + 297, + 520, + 7, + 416 + ], + [ + 297, + 520, + 9, + 88 + ], + [ + 297, + 521, + 7, + 416 + ], + [ + 297, + 522, + 7, + 26 + ], + [ + 297, + 529, + 9, + 1704 + ], + [ + 298, + 515, + 7, + 416 + ], + [ + 298, + 517, + 7, + 413 + ], + [ + 298, + 519, + 7, + 416 + ], + [ + 298, + 522, + 7, + 131 + ], + [ + 298, + 522, + 9, + 88 + ], + [ + 298, + 523, + 7, + 416 + ], + [ + 298, + 534, + 9, + 1704 + ], + [ + 299, + 524, + 7, + 416 + ], + [ + 299, + 526, + 9, + 1704 + ], + [ + 299, + 528, + 7, + 416 + ], + [ + 299, + 529, + 7, + 416 + ], + [ + 299, + 530, + 7, + 416 + ], + [ + 299, + 531, + 9, + 88 + ], + [ + 299, + 532, + 7, + 128 + ], + [ + 300, + 525, + 7, + 416 + ], + [ + 300, + 525, + 9, + 88 + ], + [ + 300, + 526, + 7, + 416 + ], + [ + 300, + 527, + 7, + 416 + ], + [ + 300, + 531, + 7, + 416 + ], + [ + 300, + 534, + 7, + 128 + ], + [ + 300, + 542, + 9, + 1704 + ], + [ + 301, + 532, + 7, + 288 + ], + [ + 301, + 533, + 7, + 384 + ], + [ + 301, + 533, + 9, + 342 + ], + [ + 301, + 534, + 7, + 288 + ], + [ + 301, + 535, + 7, + 416 + ], + [ + 301, + 539, + 9, + 380 + ], + [ + 301, + 540, + 7, + 416 + ], + [ + 301, + 540, + 9, + 238 + ], + [ + 301, + 545, + 9, + 832 + ], + [ + 302, + 533, + 7, + 32 + ], + [ + 302, + 536, + 7, + 416 + ], + [ + 302, + 537, + 7, + 416 + ], + [ + 302, + 538, + 7, + 416 + ], + [ + 302, + 541, + 7, + 96 + ], + [ + 302, + 543, + 9, + 1704 + ], + [ + 302, + 544, + 7, + 416 + ], + [ + 302, + 546, + 9, + 88 + ], + [ + 303, + 539, + 7, + 416 + ], + [ + 303, + 539, + 8, + 698 + ], + [ + 303, + 542, + 7, + 416 + ], + [ + 303, + 545, + 7, + 416 + ], + [ + 303, + 546, + 9, + 1443 + ], + [ + 303, + 547, + 7, + 195 + ], + [ + 304, + 541, + 7, + 320 + ], + [ + 304, + 543, + 7, + 416 + ], + [ + 304, + 546, + 7, + 416 + ], + [ + 304, + 547, + 7, + 221 + ], + [ + 304, + 547, + 9, + 739 + ], + [ + 304, + 548, + 7, + 416 + ], + [ + 304, + 548, + 8, + 6 + ], + [ + 304, + 548, + 9, + 1050 + ], + [ + 305, + 2, + 9, + 1147 + ], + [ + 305, + 11, + 9, + 1704 + ], + [ + 305, + 13, + 4, + 208 + ], + [ + 305, + 15, + 4, + 51 + ], + [ + 305, + 15, + 9, + 1411 + ], + [ + 305, + 17, + 4, + 208 + ], + [ + 305, + 18, + 4, + 80 + ], + [ + 305, + 20, + 4, + 208 + ], + [ + 305, + 21, + 9, + 1114 + ], + [ + 305, + 22, + 4, + 208 + ], + [ + 305, + 23, + 4, + 205 + ], + [ + 305, + 27, + 4, + 208 + ], + [ + 305, + 28, + 4, + 208 + ], + [ + 305, + 29, + 4, + 208 + ], + [ + 306, + 0, + 4, + 208 + ], + [ + 306, + 3, + 4, + 208 + ], + [ + 306, + 4, + 4, + 125 + ], + [ + 306, + 6, + 4, + 208 + ], + [ + 306, + 7, + 9, + 1616 + ], + [ + 306, + 8, + 4, + 208 + ], + [ + 306, + 14, + 4, + 208 + ], + [ + 306, + 16, + 4, + 208 + ], + [ + 306, + 16, + 9, + 1584 + ], + [ + 306, + 19, + 4, + 208 + ], + [ + 306, + 28, + 9, + 1704 + ], + [ + 306, + 29, + 5, + 3 + ], + [ + 306, + 32, + 9, + 472 + ], + [ + 306, + 33, + 4, + 208 + ], + [ + 307, + 2, + 9, + 264 + ], + [ + 307, + 5, + 4, + 208 + ], + [ + 307, + 7, + 4, + 208 + ], + [ + 307, + 9, + 4, + 208 + ], + [ + 307, + 11, + 4, + 208 + ], + [ + 307, + 18, + 4, + 128 + ], + [ + 307, + 21, + 4, + 208 + ], + [ + 307, + 22, + 9, + 1704 + ], + [ + 307, + 23, + 9, + 1704 + ], + [ + 307, + 24, + 4, + 208 + ], + [ + 307, + 29, + 9, + 1704 + ], + [ + 307, + 30, + 4, + 208 + ], + [ + 307, + 31, + 4, + 208 + ], + [ + 308, + 2, + 6, + 144 + ], + [ + 308, + 3, + 6, + 144 + ], + [ + 308, + 4, + 6, + 144 + ], + [ + 308, + 8, + 6, + 144 + ], + [ + 308, + 10, + 6, + 144 + ], + [ + 308, + 17, + 6, + 61 + ], + [ + 308, + 18, + 6, + 144 + ], + [ + 308, + 20, + 6, + 144 + ], + [ + 308, + 21, + 6, + 144 + ], + [ + 308, + 23, + 6, + 144 + ], + [ + 308, + 26, + 8, + 38 + ], + [ + 308, + 28, + 8, + 445 + ], + [ + 308, + 29, + 6, + 144 + ], + [ + 308, + 32, + 8, + 776 + ], + [ + 308, + 33, + 6, + 144 + ], + [ + 308, + 34, + 9, + 1061 + ], + [ + 308, + 35, + 6, + 144 + ], + [ + 308, + 37, + 4, + 3 + ], + [ + 308, + 38, + 8, + 530 + ], + [ + 308, + 39, + 9, + 1294 + ], + [ + 308, + 41, + 9, + 1232 + ], + [ + 309, + 2, + 4, + 208 + ], + [ + 309, + 4, + 9, + 119 + ], + [ + 309, + 10, + 4, + 208 + ], + [ + 309, + 15, + 4, + 157 + ], + [ + 309, + 20, + 9, + 328 + ], + [ + 309, + 26, + 4, + 208 + ], + [ + 309, + 26, + 9, + 328 + ], + [ + 309, + 32, + 4, + 208 + ], + [ + 309, + 37, + 9, + 1704 + ], + [ + 309, + 38, + 4, + 208 + ], + [ + 309, + 41, + 4, + 208 + ], + [ + 309, + 42, + 9, + 1704 + ], + [ + 309, + 44, + 4, + 208 + ], + [ + 309, + 45, + 4, + 176 + ], + [ + 309, + 45, + 9, + 1193 + ], + [ + 310, + 1, + 4, + 208 + ], + [ + 310, + 1, + 9, + 1584 + ], + [ + 310, + 4, + 4, + 83 + ], + [ + 310, + 25, + 4, + 208 + ], + [ + 310, + 33, + 9, + 1616 + ], + [ + 310, + 34, + 4, + 208 + ], + [ + 310, + 35, + 4, + 208 + ], + [ + 310, + 36, + 4, + 208 + ], + [ + 310, + 41, + 9, + 472 + ], + [ + 310, + 43, + 9, + 1704 + ], + [ + 310, + 46, + 4, + 208 + ], + [ + 310, + 47, + 4, + 208 + ], + [ + 310, + 48, + 4, + 48 + ], + [ + 310, + 49, + 4, + 205 + ], + [ + 311, + 1, + 6, + 144 + ], + [ + 311, + 5, + 6, + 144 + ], + [ + 311, + 6, + 6, + 144 + ], + [ + 311, + 7, + 6, + 144 + ], + [ + 311, + 22, + 6, + 144 + ], + [ + 311, + 25, + 9, + 1704 + ], + [ + 311, + 26, + 6, + 144 + ], + [ + 311, + 30, + 9, + 267 + ], + [ + 311, + 34, + 6, + 144 + ], + [ + 311, + 36, + 8, + 237 + ], + [ + 311, + 38, + 6, + 144 + ], + [ + 311, + 44, + 6, + 144 + ], + [ + 311, + 46, + 6, + 144 + ], + [ + 311, + 49, + 4, + 3 + ], + [ + 311, + 49, + 6, + 144 + ], + [ + 311, + 49, + 8, + 776 + ], + [ + 311, + 51, + 6, + 144 + ], + [ + 311, + 53, + 6, + 61 + ], + [ + 311, + 54, + 9, + 1616 + ], + [ + 311, + 55, + 8, + 776 + ], + [ + 312, + 39, + 4, + 208 + ], + [ + 312, + 42, + 4, + 138 + ], + [ + 312, + 43, + 4, + 208 + ], + [ + 312, + 44, + 9, + 1704 + ], + [ + 312, + 50, + 9, + 1395 + ], + [ + 312, + 52, + 4, + 208 + ], + [ + 312, + 53, + 4, + 95 + ], + [ + 312, + 55, + 7, + 416 + ], + [ + 312, + 57, + 4, + 154 + ], + [ + 312, + 57, + 7, + 314 + ], + [ + 312, + 59, + 9, + 1704 + ], + [ + 312, + 60, + 4, + 208 + ], + [ + 312, + 60, + 7, + 416 + ], + [ + 313, + 13, + 6, + 144 + ], + [ + 313, + 15, + 6, + 144 + ], + [ + 313, + 23, + 4, + 3 + ], + [ + 313, + 27, + 6, + 144 + ], + [ + 313, + 28, + 6, + 144 + ], + [ + 313, + 30, + 6, + 144 + ], + [ + 313, + 30, + 8, + 742 + ], + [ + 313, + 31, + 6, + 144 + ], + [ + 313, + 39, + 6, + 49 + ], + [ + 313, + 40, + 6, + 144 + ], + [ + 313, + 51, + 8, + 276 + ], + [ + 313, + 52, + 6, + 144 + ], + [ + 313, + 52, + 9, + 1648 + ], + [ + 313, + 56, + 6, + 144 + ], + [ + 313, + 59, + 6, + 12 + ], + [ + 313, + 60, + 8, + 771 + ], + [ + 313, + 60, + 9, + 1021 + ], + [ + 313, + 61, + 6, + 144 + ], + [ + 313, + 62, + 6, + 144 + ], + [ + 313, + 62, + 9, + 918 + ], + [ + 313, + 65, + 6, + 144 + ], + [ + 314, + 0, + 9, + 616 + ], + [ + 314, + 12, + 4, + 208 + ], + [ + 314, + 34, + 9, + 382 + ], + [ + 314, + 37, + 4, + 205 + ], + [ + 314, + 51, + 4, + 208 + ], + [ + 314, + 53, + 9, + 1704 + ], + [ + 314, + 55, + 9, + 1704 + ], + [ + 314, + 57, + 4, + 54 + ], + [ + 314, + 61, + 4, + 208 + ], + [ + 314, + 62, + 4, + 208 + ], + [ + 314, + 63, + 4, + 208 + ], + [ + 314, + 64, + 9, + 967 + ], + [ + 314, + 66, + 4, + 74 + ], + [ + 314, + 66, + 6, + 3 + ], + [ + 314, + 67, + 4, + 208 + ], + [ + 314, + 69, + 4, + 208 + ], + [ + 314, + 69, + 8, + 3 + ], + [ + 315, + 9, + 9, + 1616 + ], + [ + 315, + 16, + 9, + 120 + ], + [ + 315, + 36, + 9, + 1704 + ], + [ + 315, + 48, + 4, + 160 + ], + [ + 315, + 50, + 4, + 208 + ], + [ + 315, + 54, + 4, + 205 + ], + [ + 315, + 55, + 4, + 176 + ], + [ + 315, + 58, + 4, + 208 + ], + [ + 315, + 59, + 4, + 208 + ], + [ + 315, + 70, + 9, + 1565 + ], + [ + 315, + 71, + 4, + 208 + ], + [ + 315, + 72, + 4, + 208 + ], + [ + 315, + 72, + 6, + 3 + ], + [ + 315, + 72, + 9, + 368 + ], + [ + 315, + 74, + 4, + 208 + ], + [ + 315, + 75, + 8, + 3 + ], + [ + 316, + 0, + 5, + 16 + ], + [ + 316, + 1, + 5, + 16 + ], + [ + 316, + 2, + 5, + 16 + ], + [ + 316, + 3, + 5, + 16 + ], + [ + 316, + 4, + 5, + 16 + ], + [ + 316, + 5, + 5, + 16 + ], + [ + 316, + 6, + 5, + 16 + ], + [ + 316, + 7, + 5, + 16 + ], + [ + 316, + 8, + 5, + 16 + ], + [ + 316, + 9, + 5, + 16 + ], + [ + 316, + 10, + 5, + 16 + ], + [ + 316, + 11, + 5, + 16 + ], + [ + 316, + 12, + 5, + 16 + ], + [ + 316, + 13, + 5, + 16 + ], + [ + 316, + 14, + 5, + 16 + ], + [ + 316, + 15, + 5, + 16 + ], + [ + 316, + 16, + 5, + 16 + ], + [ + 316, + 17, + 5, + 16 + ], + [ + 316, + 18, + 5, + 16 + ], + [ + 316, + 19, + 5, + 16 + ], + [ + 316, + 20, + 5, + 16 + ], + [ + 316, + 21, + 5, + 16 + ], + [ + 316, + 22, + 5, + 16 + ], + [ + 316, + 23, + 5, + 16 + ], + [ + 316, + 24, + 5, + 16 + ], + [ + 316, + 25, + 5, + 16 + ], + [ + 316, + 26, + 5, + 16 + ], + [ + 316, + 27, + 5, + 16 + ], + [ + 316, + 28, + 5, + 16 + ], + [ + 316, + 29, + 5, + 13 + ], + [ + 316, + 30, + 5, + 16 + ], + [ + 316, + 31, + 5, + 16 + ], + [ + 316, + 32, + 5, + 16 + ], + [ + 316, + 33, + 5, + 16 + ], + [ + 316, + 34, + 5, + 16 + ], + [ + 316, + 35, + 5, + 16 + ], + [ + 316, + 36, + 5, + 16 + ], + [ + 316, + 37, + 5, + 16 + ], + [ + 316, + 38, + 5, + 16 + ], + [ + 316, + 39, + 5, + 16 + ], + [ + 316, + 40, + 5, + 16 + ], + [ + 316, + 41, + 5, + 16 + ], + [ + 316, + 42, + 5, + 16 + ], + [ + 316, + 43, + 5, + 16 + ], + [ + 316, + 44, + 5, + 16 + ], + [ + 316, + 45, + 5, + 16 + ], + [ + 316, + 46, + 5, + 16 + ], + [ + 316, + 47, + 5, + 16 + ], + [ + 316, + 48, + 5, + 16 + ], + [ + 316, + 49, + 5, + 16 + ], + [ + 316, + 50, + 5, + 16 + ], + [ + 316, + 50, + 9, + 309 + ], + [ + 316, + 51, + 5, + 16 + ], + [ + 316, + 51, + 9, + 322 + ], + [ + 316, + 52, + 5, + 16 + ], + [ + 316, + 53, + 4, + 16 + ], + [ + 316, + 53, + 5, + 16 + ], + [ + 316, + 54, + 5, + 16 + ], + [ + 316, + 55, + 4, + 32 + ], + [ + 316, + 55, + 5, + 16 + ], + [ + 316, + 56, + 5, + 16 + ], + [ + 316, + 57, + 5, + 16 + ], + [ + 316, + 58, + 5, + 16 + ], + [ + 316, + 59, + 5, + 16 + ], + [ + 316, + 60, + 5, + 16 + ], + [ + 316, + 61, + 5, + 16 + ], + [ + 316, + 62, + 5, + 16 + ], + [ + 316, + 63, + 5, + 16 + ], + [ + 316, + 64, + 5, + 16 + ], + [ + 316, + 65, + 5, + 16 + ], + [ + 316, + 66, + 5, + 16 + ], + [ + 316, + 67, + 5, + 16 + ], + [ + 316, + 68, + 5, + 16 + ], + [ + 316, + 68, + 9, + 1704 + ], + [ + 316, + 69, + 5, + 16 + ], + [ + 316, + 70, + 5, + 16 + ], + [ + 316, + 71, + 5, + 16 + ], + [ + 316, + 72, + 5, + 16 + ], + [ + 316, + 72, + 9, + 577 + ], + [ + 316, + 73, + 5, + 16 + ], + [ + 316, + 74, + 5, + 16 + ], + [ + 316, + 75, + 5, + 16 + ], + [ + 316, + 75, + 8, + 3 + ], + [ + 316, + 76, + 5, + 16 + ], + [ + 316, + 76, + 6, + 3 + ], + [ + 316, + 77, + 4, + 208 + ], + [ + 316, + 77, + 5, + 16 + ], + [ + 316, + 77, + 9, + 780 + ], + [ + 316, + 78, + 5, + 16 + ], + [ + 316, + 79, + 5, + 16 + ], + [ + 316, + 80, + 5, + 16 + ], + [ + 316, + 80, + 9, + 1681 + ], + [ + 316, + 81, + 4, + 208 + ], + [ + 316, + 81, + 5, + 16 + ], + [ + 316, + 82, + 5, + 16 + ], + [ + 317, + 3, + 9, + 1704 + ], + [ + 317, + 38, + 9, + 1576 + ], + [ + 317, + 45, + 4, + 32 + ], + [ + 317, + 56, + 4, + 208 + ], + [ + 317, + 57, + 9, + 1704 + ], + [ + 317, + 65, + 4, + 93 + ], + [ + 317, + 68, + 4, + 208 + ], + [ + 317, + 70, + 4, + 208 + ], + [ + 317, + 76, + 4, + 208 + ], + [ + 317, + 82, + 4, + 208 + ], + [ + 317, + 82, + 9, + 392 + ], + [ + 317, + 85, + 4, + 208 + ], + [ + 317, + 86, + 4, + 208 + ], + [ + 317, + 88, + 4, + 208 + ], + [ + 318, + 30, + 9, + 1437 + ], + [ + 318, + 40, + 4, + 208 + ], + [ + 318, + 45, + 9, + 347 + ], + [ + 318, + 49, + 9, + 378 + ], + [ + 318, + 65, + 4, + 115 + ], + [ + 318, + 73, + 4, + 130 + ], + [ + 318, + 73, + 9, + 1510 + ], + [ + 318, + 75, + 4, + 208 + ], + [ + 318, + 79, + 4, + 208 + ], + [ + 318, + 83, + 4, + 208 + ], + [ + 318, + 84, + 4, + 208 + ], + [ + 318, + 87, + 4, + 208 + ], + [ + 318, + 89, + 4, + 88 + ], + [ + 318, + 89, + 9, + 1704 + ], + [ + 318, + 94, + 4, + 208 + ], + [ + 319, + 17, + 6, + 83 + ], + [ + 319, + 25, + 6, + 144 + ], + [ + 319, + 43, + 6, + 144 + ], + [ + 319, + 47, + 9, + 40 + ], + [ + 319, + 50, + 6, + 112 + ], + [ + 319, + 53, + 6, + 83 + ], + [ + 319, + 54, + 4, + 3 + ], + [ + 319, + 54, + 6, + 144 + ], + [ + 319, + 60, + 6, + 144 + ], + [ + 319, + 66, + 9, + 1704 + ], + [ + 319, + 70, + 9, + 139 + ], + [ + 319, + 71, + 6, + 141 + ], + [ + 319, + 75, + 6, + 144 + ], + [ + 319, + 76, + 6, + 141 + ], + [ + 319, + 77, + 6, + 144 + ], + [ + 319, + 84, + 8, + 237 + ], + [ + 319, + 89, + 6, + 144 + ], + [ + 319, + 91, + 9, + 1704 + ], + [ + 319, + 96, + 6, + 141 + ], + [ + 319, + 99, + 6, + 80 + ], + [ + 319, + 99, + 8, + 776 + ], + [ + 319, + 101, + 8, + 776 + ], + [ + 320, + 21, + 9, + 590 + ], + [ + 320, + 27, + 9, + 1704 + ], + [ + 320, + 32, + 9, + 1232 + ], + [ + 320, + 85, + 9, + 143 + ], + [ + 320, + 86, + 7, + 6 + ], + [ + 320, + 90, + 4, + 208 + ], + [ + 320, + 93, + 4, + 208 + ], + [ + 320, + 95, + 4, + 90 + ], + [ + 320, + 96, + 9, + 1704 + ], + [ + 320, + 97, + 4, + 208 + ], + [ + 320, + 99, + 4, + 208 + ], + [ + 320, + 101, + 4, + 35 + ], + [ + 320, + 105, + 4, + 208 + ], + [ + 320, + 106, + 4, + 208 + ], + [ + 320, + 107, + 4, + 208 + ], + [ + 320, + 108, + 4, + 208 + ], + [ + 321, + 60, + 9, + 683 + ], + [ + 321, + 78, + 4, + 208 + ], + [ + 321, + 80, + 4, + 208 + ], + [ + 321, + 80, + 9, + 23 + ], + [ + 321, + 94, + 9, + 1704 + ], + [ + 321, + 95, + 4, + 118 + ], + [ + 321, + 96, + 4, + 208 + ], + [ + 321, + 102, + 4, + 88 + ], + [ + 321, + 102, + 9, + 1704 + ], + [ + 321, + 104, + 4, + 208 + ], + [ + 321, + 111, + 4, + 130 + ], + [ + 321, + 111, + 9, + 1262 + ], + [ + 321, + 113, + 4, + 208 + ], + [ + 321, + 114, + 4, + 208 + ], + [ + 321, + 115, + 4, + 208 + ], + [ + 322, + 9, + 6, + 144 + ], + [ + 322, + 11, + 6, + 144 + ], + [ + 322, + 13, + 9, + 1704 + ], + [ + 322, + 16, + 6, + 144 + ], + [ + 322, + 42, + 6, + 144 + ], + [ + 322, + 48, + 6, + 144 + ], + [ + 322, + 55, + 6, + 144 + ], + [ + 322, + 69, + 6, + 144 + ], + [ + 322, + 73, + 6, + 144 + ], + [ + 322, + 80, + 6, + 144 + ], + [ + 322, + 82, + 6, + 144 + ], + [ + 322, + 85, + 6, + 144 + ], + [ + 322, + 86, + 8, + 264 + ], + [ + 322, + 86, + 9, + 1528 + ], + [ + 322, + 93, + 6, + 42 + ], + [ + 322, + 100, + 6, + 22 + ], + [ + 322, + 104, + 9, + 352 + ], + [ + 322, + 110, + 6, + 144 + ], + [ + 322, + 117, + 8, + 752 + ], + [ + 322, + 121, + 8, + 776 + ], + [ + 323, + 62, + 9, + 786 + ], + [ + 323, + 66, + 4, + 134 + ], + [ + 323, + 88, + 9, + 1704 + ], + [ + 323, + 89, + 4, + 120 + ], + [ + 323, + 94, + 6, + 3 + ], + [ + 323, + 97, + 9, + 446 + ], + [ + 323, + 104, + 9, + 853 + ], + [ + 323, + 112, + 4, + 79 + ], + [ + 323, + 116, + 4, + 208 + ], + [ + 323, + 117, + 4, + 208 + ], + [ + 323, + 120, + 4, + 208 + ], + [ + 323, + 121, + 4, + 208 + ], + [ + 323, + 121, + 9, + 1584 + ], + [ + 323, + 123, + 4, + 208 + ], + [ + 323, + 125, + 4, + 208 + ], + [ + 323, + 127, + 4, + 208 + ], + [ + 323, + 129, + 8, + 3 + ], + [ + 324, + 72, + 9, + 759 + ], + [ + 324, + 99, + 9, + 414 + ], + [ + 324, + 112, + 9, + 1704 + ], + [ + 324, + 126, + 9, + 795 + ], + [ + 324, + 128, + 9, + 1704 + ], + [ + 325, + 71, + 7, + 248 + ], + [ + 325, + 83, + 5, + 16 + ], + [ + 325, + 84, + 5, + 16 + ], + [ + 325, + 85, + 5, + 16 + ], + [ + 325, + 86, + 5, + 16 + ], + [ + 325, + 87, + 5, + 16 + ], + [ + 325, + 87, + 9, + 1704 + ], + [ + 325, + 88, + 5, + 16 + ], + [ + 325, + 89, + 5, + 16 + ], + [ + 325, + 90, + 5, + 16 + ], + [ + 325, + 91, + 5, + 16 + ], + [ + 325, + 92, + 5, + 16 + ], + [ + 325, + 93, + 5, + 16 + ], + [ + 325, + 94, + 5, + 16 + ], + [ + 325, + 95, + 5, + 16 + ], + [ + 325, + 96, + 5, + 16 + ], + [ + 325, + 97, + 5, + 16 + ], + [ + 325, + 98, + 5, + 16 + ], + [ + 325, + 98, + 9, + 1616 + ], + [ + 325, + 99, + 5, + 16 + ], + [ + 325, + 99, + 9, + 1275 + ], + [ + 325, + 100, + 5, + 16 + ], + [ + 325, + 101, + 5, + 16 + ], + [ + 325, + 102, + 5, + 16 + ], + [ + 325, + 103, + 5, + 16 + ], + [ + 325, + 104, + 5, + 16 + ], + [ + 325, + 105, + 5, + 16 + ], + [ + 325, + 106, + 5, + 16 + ], + [ + 325, + 107, + 5, + 16 + ], + [ + 325, + 108, + 5, + 16 + ], + [ + 325, + 108, + 7, + 416 + ], + [ + 325, + 109, + 5, + 16 + ], + [ + 325, + 110, + 5, + 16 + ], + [ + 325, + 111, + 5, + 16 + ], + [ + 325, + 112, + 5, + 16 + ], + [ + 325, + 113, + 5, + 16 + ], + [ + 325, + 114, + 5, + 16 + ], + [ + 325, + 115, + 5, + 16 + ], + [ + 325, + 116, + 5, + 16 + ], + [ + 325, + 117, + 5, + 16 + ], + [ + 325, + 118, + 5, + 16 + ], + [ + 325, + 119, + 5, + 16 + ], + [ + 325, + 120, + 5, + 16 + ], + [ + 325, + 121, + 5, + 16 + ], + [ + 325, + 122, + 5, + 16 + ], + [ + 325, + 123, + 5, + 16 + ], + [ + 325, + 124, + 5, + 16 + ], + [ + 325, + 125, + 5, + 16 + ], + [ + 325, + 126, + 5, + 16 + ], + [ + 325, + 127, + 5, + 16 + ], + [ + 325, + 128, + 5, + 16 + ], + [ + 325, + 129, + 5, + 16 + ], + [ + 325, + 130, + 5, + 16 + ], + [ + 325, + 131, + 5, + 16 + ], + [ + 325, + 132, + 5, + 16 + ], + [ + 325, + 133, + 5, + 16 + ], + [ + 325, + 133, + 7, + 66 + ], + [ + 325, + 134, + 5, + 16 + ], + [ + 325, + 135, + 5, + 16 + ], + [ + 325, + 136, + 5, + 16 + ], + [ + 325, + 137, + 5, + 16 + ], + [ + 325, + 138, + 5, + 16 + ], + [ + 325, + 139, + 4, + 3 + ], + [ + 325, + 139, + 5, + 16 + ], + [ + 325, + 140, + 5, + 16 + ], + [ + 325, + 141, + 5, + 16 + ], + [ + 325, + 142, + 5, + 16 + ], + [ + 325, + 143, + 5, + 16 + ], + [ + 325, + 143, + 7, + 416 + ], + [ + 325, + 144, + 5, + 16 + ], + [ + 325, + 145, + 5, + 16 + ], + [ + 325, + 145, + 7, + 416 + ], + [ + 326, + 91, + 4, + 208 + ], + [ + 326, + 93, + 9, + 1704 + ], + [ + 326, + 119, + 9, + 1704 + ], + [ + 326, + 124, + 4, + 208 + ], + [ + 326, + 131, + 4, + 208 + ], + [ + 326, + 133, + 4, + 208 + ], + [ + 326, + 135, + 4, + 208 + ], + [ + 326, + 139, + 8, + 3 + ], + [ + 326, + 144, + 4, + 208 + ], + [ + 326, + 145, + 9, + 1704 + ], + [ + 326, + 146, + 6, + 3 + ], + [ + 326, + 147, + 9, + 261 + ], + [ + 326, + 149, + 4, + 208 + ], + [ + 326, + 150, + 4, + 208 + ], + [ + 326, + 152, + 4, + 125 + ], + [ + 327, + 14, + 6, + 144 + ], + [ + 327, + 24, + 6, + 144 + ], + [ + 327, + 67, + 6, + 144 + ], + [ + 327, + 98, + 6, + 141 + ], + [ + 327, + 99, + 6, + 64 + ], + [ + 327, + 101, + 6, + 144 + ], + [ + 327, + 102, + 6, + 144 + ], + [ + 327, + 108, + 9, + 1704 + ], + [ + 327, + 109, + 6, + 144 + ], + [ + 327, + 119, + 6, + 144 + ], + [ + 327, + 132, + 6, + 144 + ], + [ + 327, + 138, + 4, + 3 + ], + [ + 327, + 143, + 9, + 450 + ], + [ + 327, + 145, + 6, + 144 + ], + [ + 327, + 151, + 8, + 237 + ], + [ + 327, + 154, + 6, + 144 + ], + [ + 327, + 155, + 8, + 776 + ], + [ + 327, + 156, + 9, + 1433 + ], + [ + 327, + 157, + 8, + 776 + ], + [ + 327, + 158, + 6, + 144 + ], + [ + 328, + 32, + 6, + 144 + ], + [ + 328, + 42, + 4, + 70 + ], + [ + 328, + 50, + 6, + 32 + ], + [ + 328, + 64, + 6, + 144 + ], + [ + 328, + 69, + 9, + 1704 + ], + [ + 328, + 77, + 9, + 748 + ], + [ + 328, + 78, + 6, + 141 + ], + [ + 328, + 79, + 9, + 1267 + ], + [ + 328, + 107, + 6, + 144 + ], + [ + 328, + 110, + 9, + 764 + ], + [ + 328, + 113, + 6, + 144 + ], + [ + 328, + 129, + 4, + 208 + ], + [ + 328, + 139, + 4, + 205 + ], + [ + 328, + 143, + 4, + 208 + ], + [ + 328, + 145, + 4, + 208 + ], + [ + 328, + 150, + 8, + 224 + ], + [ + 328, + 152, + 6, + 144 + ], + [ + 328, + 162, + 8, + 669 + ], + [ + 329, + 73, + 4, + 78 + ], + [ + 329, + 73, + 9, + 194 + ], + [ + 329, + 97, + 9, + 1258 + ], + [ + 329, + 98, + 4, + 208 + ], + [ + 329, + 110, + 4, + 208 + ], + [ + 329, + 118, + 4, + 208 + ], + [ + 329, + 128, + 4, + 208 + ], + [ + 329, + 130, + 4, + 88 + ], + [ + 329, + 130, + 9, + 1704 + ], + [ + 329, + 136, + 4, + 208 + ], + [ + 329, + 136, + 6, + 3 + ], + [ + 329, + 141, + 4, + 167 + ], + [ + 329, + 146, + 9, + 120 + ], + [ + 329, + 154, + 4, + 208 + ], + [ + 329, + 160, + 9, + 1704 + ], + [ + 329, + 161, + 9, + 393 + ], + [ + 329, + 165, + 8, + 3 + ], + [ + 329, + 177, + 4, + 208 + ], + [ + 330, + 79, + 9, + 437 + ], + [ + 330, + 81, + 6, + 3 + ], + [ + 330, + 84, + 9, + 1704 + ], + [ + 330, + 100, + 4, + 208 + ], + [ + 330, + 101, + 4, + 173 + ], + [ + 330, + 122, + 4, + 208 + ], + [ + 330, + 132, + 4, + 208 + ], + [ + 330, + 137, + 4, + 208 + ], + [ + 330, + 144, + 9, + 1528 + ], + [ + 330, + 147, + 4, + 208 + ], + [ + 330, + 152, + 4, + 83 + ], + [ + 330, + 155, + 4, + 208 + ], + [ + 330, + 165, + 8, + 3 + ], + [ + 330, + 172, + 4, + 77 + ], + [ + 330, + 180, + 9, + 1704 + ], + [ + 330, + 183, + 4, + 208 + ], + [ + 331, + 0, + 6, + 144 + ], + [ + 331, + 41, + 6, + 144 + ], + [ + 331, + 45, + 6, + 144 + ], + [ + 331, + 46, + 9, + 1704 + ], + [ + 331, + 58, + 6, + 144 + ], + [ + 331, + 68, + 6, + 141 + ], + [ + 331, + 75, + 7, + 6 + ], + [ + 331, + 77, + 9, + 176 + ], + [ + 331, + 79, + 6, + 144 + ], + [ + 331, + 87, + 6, + 144 + ], + [ + 331, + 91, + 6, + 144 + ], + [ + 331, + 104, + 6, + 144 + ], + [ + 331, + 108, + 6, + 141 + ], + [ + 331, + 137, + 6, + 144 + ], + [ + 331, + 138, + 6, + 144 + ], + [ + 331, + 159, + 8, + 776 + ], + [ + 331, + 166, + 9, + 1704 + ], + [ + 331, + 174, + 8, + 237 + ], + [ + 331, + 191, + 6, + 67 + ], + [ + 331, + 193, + 8, + 776 + ], + [ + 332, + 64, + 4, + 208 + ], + [ + 332, + 105, + 9, + 1704 + ], + [ + 332, + 117, + 9, + 92 + ], + [ + 332, + 133, + 9, + 707 + ], + [ + 332, + 148, + 4, + 208 + ], + [ + 332, + 148, + 9, + 1528 + ], + [ + 332, + 159, + 4, + 208 + ], + [ + 332, + 165, + 4, + 208 + ], + [ + 332, + 166, + 4, + 208 + ], + [ + 332, + 167, + 4, + 205 + ], + [ + 332, + 172, + 4, + 131 + ], + [ + 332, + 181, + 9, + 1345 + ], + [ + 332, + 196, + 4, + 208 + ], + [ + 332, + 200, + 4, + 208 + ], + [ + 333, + 71, + 6, + 3 + ], + [ + 333, + 103, + 4, + 208 + ], + [ + 333, + 134, + 4, + 208 + ], + [ + 333, + 142, + 4, + 181 + ], + [ + 333, + 153, + 4, + 32 + ], + [ + 333, + 161, + 4, + 205 + ], + [ + 333, + 169, + 9, + 1704 + ], + [ + 333, + 184, + 4, + 208 + ], + [ + 333, + 185, + 4, + 208 + ], + [ + 333, + 187, + 4, + 208 + ], + [ + 333, + 192, + 4, + 208 + ], + [ + 333, + 197, + 8, + 3 + ], + [ + 333, + 197, + 9, + 296 + ], + [ + 333, + 204, + 9, + 1704 + ], + [ + 333, + 205, + 4, + 123 + ], + [ + 333, + 205, + 9, + 1669 + ], + [ + 334, + 66, + 6, + 141 + ], + [ + 334, + 70, + 6, + 144 + ], + [ + 334, + 74, + 6, + 144 + ], + [ + 334, + 103, + 6, + 102 + ], + [ + 334, + 114, + 9, + 1704 + ], + [ + 334, + 125, + 6, + 141 + ], + [ + 334, + 146, + 5, + 16 + ], + [ + 334, + 147, + 5, + 16 + ], + [ + 334, + 148, + 5, + 16 + ], + [ + 334, + 149, + 5, + 16 + ], + [ + 334, + 150, + 5, + 16 + ], + [ + 334, + 151, + 5, + 16 + ], + [ + 334, + 152, + 5, + 16 + ], + [ + 334, + 153, + 5, + 16 + ], + [ + 334, + 154, + 5, + 16 + ], + [ + 334, + 155, + 5, + 16 + ], + [ + 334, + 156, + 5, + 16 + ], + [ + 334, + 157, + 5, + 16 + ], + [ + 334, + 158, + 5, + 16 + ], + [ + 334, + 159, + 5, + 16 + ], + [ + 334, + 159, + 9, + 1689 + ], + [ + 334, + 160, + 5, + 16 + ], + [ + 334, + 161, + 5, + 16 + ], + [ + 334, + 161, + 9, + 1311 + ], + [ + 334, + 162, + 5, + 16 + ], + [ + 334, + 163, + 5, + 16 + ], + [ + 334, + 164, + 5, + 16 + ], + [ + 334, + 165, + 5, + 16 + ], + [ + 334, + 166, + 5, + 16 + ], + [ + 334, + 167, + 5, + 16 + ], + [ + 334, + 168, + 5, + 16 + ], + [ + 334, + 169, + 5, + 16 + ], + [ + 334, + 170, + 5, + 16 + ], + [ + 334, + 171, + 5, + 16 + ], + [ + 334, + 172, + 5, + 16 + ], + [ + 334, + 173, + 5, + 16 + ], + [ + 334, + 174, + 5, + 16 + ], + [ + 334, + 175, + 5, + 16 + ], + [ + 334, + 176, + 4, + 3 + ], + [ + 334, + 176, + 5, + 16 + ], + [ + 334, + 177, + 5, + 16 + ], + [ + 334, + 178, + 5, + 16 + ], + [ + 334, + 179, + 5, + 16 + ], + [ + 334, + 180, + 5, + 16 + ], + [ + 334, + 181, + 5, + 16 + ], + [ + 334, + 182, + 5, + 16 + ], + [ + 334, + 183, + 5, + 16 + ], + [ + 334, + 184, + 5, + 16 + ], + [ + 334, + 185, + 5, + 16 + ], + [ + 334, + 186, + 5, + 16 + ], + [ + 334, + 187, + 5, + 16 + ], + [ + 334, + 188, + 5, + 16 + ], + [ + 334, + 189, + 5, + 16 + ], + [ + 334, + 190, + 5, + 16 + ], + [ + 334, + 191, + 5, + 16 + ], + [ + 334, + 192, + 5, + 16 + ], + [ + 334, + 193, + 5, + 16 + ], + [ + 334, + 194, + 5, + 16 + ], + [ + 334, + 195, + 5, + 16 + ], + [ + 334, + 196, + 5, + 16 + ], + [ + 334, + 197, + 5, + 16 + ], + [ + 334, + 198, + 5, + 16 + ], + [ + 334, + 199, + 5, + 16 + ], + [ + 334, + 200, + 5, + 16 + ], + [ + 334, + 201, + 5, + 16 + ], + [ + 334, + 202, + 5, + 16 + ], + [ + 334, + 203, + 5, + 16 + ], + [ + 334, + 204, + 5, + 16 + ], + [ + 334, + 205, + 5, + 16 + ], + [ + 334, + 206, + 5, + 16 + ], + [ + 334, + 206, + 8, + 672 + ], + [ + 334, + 207, + 5, + 16 + ], + [ + 334, + 208, + 5, + 16 + ], + [ + 334, + 209, + 5, + 16 + ], + [ + 334, + 210, + 5, + 16 + ], + [ + 334, + 211, + 5, + 16 + ], + [ + 334, + 212, + 5, + 16 + ], + [ + 334, + 213, + 5, + 13 + ], + [ + 334, + 214, + 5, + 16 + ], + [ + 334, + 215, + 5, + 16 + ], + [ + 335, + 82, + 9, + 1312 + ], + [ + 335, + 126, + 9, + 776 + ], + [ + 335, + 130, + 4, + 12 + ], + [ + 335, + 146, + 4, + 208 + ], + [ + 335, + 146, + 9, + 1584 + ], + [ + 335, + 151, + 9, + 1704 + ], + [ + 335, + 193, + 4, + 208 + ], + [ + 335, + 194, + 4, + 208 + ], + [ + 335, + 199, + 4, + 116 + ], + [ + 335, + 201, + 4, + 208 + ], + [ + 335, + 203, + 4, + 208 + ], + [ + 335, + 206, + 4, + 208 + ], + [ + 335, + 214, + 4, + 208 + ], + [ + 335, + 221, + 4, + 208 + ], + [ + 336, + 142, + 4, + 27 + ], + [ + 336, + 155, + 9, + 1704 + ], + [ + 336, + 158, + 4, + 208 + ], + [ + 336, + 173, + 9, + 333 + ], + [ + 336, + 198, + 4, + 208 + ], + [ + 336, + 204, + 4, + 208 + ], + [ + 336, + 208, + 4, + 208 + ], + [ + 336, + 210, + 4, + 208 + ], + [ + 336, + 212, + 4, + 101 + ], + [ + 336, + 220, + 9, + 1635 + ], + [ + 336, + 224, + 4, + 208 + ], + [ + 336, + 225, + 9, + 1704 + ], + [ + 336, + 226, + 4, + 208 + ], + [ + 336, + 228, + 4, + 208 + ], + [ + 337, + 53, + 4, + 97 + ], + [ + 337, + 61, + 9, + 1150 + ], + [ + 337, + 141, + 9, + 1601 + ], + [ + 337, + 143, + 9, + 1254 + ], + [ + 337, + 173, + 9, + 1371 + ], + [ + 337, + 188, + 4, + 208 + ], + [ + 337, + 207, + 4, + 208 + ], + [ + 337, + 219, + 4, + 208 + ], + [ + 337, + 225, + 4, + 208 + ], + [ + 337, + 227, + 4, + 208 + ], + [ + 337, + 232, + 4, + 208 + ], + [ + 337, + 233, + 4, + 31 + ], + [ + 337, + 234, + 4, + 208 + ], + [ + 337, + 236, + 4, + 208 + ], + [ + 338, + 78, + 6, + 3 + ], + [ + 338, + 147, + 9, + 1443 + ], + [ + 338, + 220, + 4, + 208 + ], + [ + 338, + 220, + 9, + 69 + ], + [ + 338, + 222, + 4, + 208 + ], + [ + 338, + 229, + 4, + 208 + ], + [ + 338, + 233, + 4, + 177 + ], + [ + 338, + 235, + 4, + 88 + ], + [ + 338, + 235, + 9, + 1704 + ], + [ + 338, + 236, + 9, + 453 + ], + [ + 338, + 238, + 4, + 208 + ], + [ + 338, + 239, + 4, + 208 + ], + [ + 338, + 240, + 4, + 68 + ], + [ + 338, + 240, + 9, + 1704 + ], + [ + 338, + 241, + 4, + 208 + ], + [ + 338, + 241, + 8, + 3 + ], + [ + 338, + 242, + 4, + 208 + ], + [ + 339, + 84, + 6, + 144 + ], + [ + 339, + 94, + 6, + 141 + ], + [ + 339, + 98, + 6, + 3 + ], + [ + 339, + 112, + 6, + 144 + ], + [ + 339, + 115, + 6, + 144 + ], + [ + 339, + 126, + 6, + 144 + ], + [ + 339, + 131, + 6, + 144 + ], + [ + 339, + 136, + 6, + 141 + ], + [ + 339, + 139, + 9, + 1279 + ], + [ + 339, + 147, + 6, + 144 + ], + [ + 339, + 151, + 6, + 144 + ], + [ + 339, + 153, + 6, + 144 + ], + [ + 339, + 157, + 6, + 144 + ], + [ + 339, + 178, + 6, + 144 + ], + [ + 339, + 216, + 9, + 32 + ], + [ + 339, + 217, + 9, + 1704 + ], + [ + 339, + 229, + 6, + 64 + ], + [ + 339, + 232, + 9, + 572 + ], + [ + 339, + 234, + 8, + 776 + ], + [ + 339, + 239, + 8, + 425 + ], + [ + 339, + 244, + 5, + 3 + ], + [ + 339, + 244, + 8, + 588 + ], + [ + 340, + 47, + 6, + 144 + ], + [ + 340, + 72, + 6, + 141 + ], + [ + 340, + 81, + 6, + 141 + ], + [ + 340, + 85, + 7, + 6 + ], + [ + 340, + 114, + 6, + 144 + ], + [ + 340, + 121, + 6, + 144 + ], + [ + 340, + 128, + 6, + 144 + ], + [ + 340, + 130, + 6, + 83 + ], + [ + 340, + 161, + 6, + 144 + ], + [ + 340, + 179, + 6, + 144 + ], + [ + 340, + 201, + 9, + 448 + ], + [ + 340, + 202, + 6, + 144 + ], + [ + 340, + 215, + 6, + 144 + ], + [ + 340, + 238, + 5, + 16 + ], + [ + 340, + 238, + 9, + 1704 + ], + [ + 340, + 239, + 5, + 16 + ], + [ + 340, + 240, + 5, + 16 + ], + [ + 340, + 241, + 5, + 16 + ], + [ + 340, + 242, + 5, + 16 + ], + [ + 340, + 243, + 5, + 16 + ], + [ + 340, + 244, + 5, + 13 + ], + [ + 340, + 245, + 5, + 16 + ], + [ + 340, + 245, + 9, + 1704 + ], + [ + 340, + 246, + 5, + 16 + ], + [ + 340, + 247, + 5, + 16 + ], + [ + 340, + 248, + 5, + 16 + ], + [ + 340, + 249, + 5, + 16 + ], + [ + 340, + 250, + 5, + 16 + ], + [ + 340, + 250, + 8, + 776 + ], + [ + 340, + 251, + 5, + 16 + ], + [ + 340, + 252, + 4, + 3 + ], + [ + 340, + 252, + 5, + 16 + ], + [ + 340, + 253, + 5, + 16 + ], + [ + 340, + 254, + 5, + 16 + ], + [ + 340, + 254, + 8, + 741 + ], + [ + 341, + 19, + 6, + 144 + ], + [ + 341, + 36, + 6, + 144 + ], + [ + 341, + 37, + 6, + 144 + ], + [ + 341, + 59, + 6, + 132 + ], + [ + 341, + 68, + 6, + 3 + ], + [ + 341, + 83, + 6, + 141 + ], + [ + 341, + 92, + 6, + 144 + ], + [ + 341, + 93, + 6, + 102 + ], + [ + 341, + 103, + 6, + 42 + ], + [ + 341, + 123, + 6, + 144 + ], + [ + 341, + 130, + 6, + 61 + ], + [ + 341, + 146, + 6, + 141 + ], + [ + 341, + 165, + 6, + 144 + ], + [ + 341, + 175, + 6, + 144 + ], + [ + 341, + 195, + 9, + 1704 + ], + [ + 341, + 196, + 6, + 144 + ], + [ + 341, + 229, + 9, + 179 + ], + [ + 341, + 236, + 8, + 299 + ], + [ + 341, + 241, + 9, + 1704 + ], + [ + 341, + 245, + 6, + 15 + ], + [ + 341, + 254, + 8, + 35 + ], + [ + 341, + 256, + 8, + 244 + ], + [ + 341, + 258, + 8, + 776 + ], + [ + 341, + 259, + 4, + 3 + ], + [ + 341, + 260, + 8, + 435 + ], + [ + 342, + 86, + 6, + 144 + ], + [ + 342, + 106, + 6, + 83 + ], + [ + 342, + 124, + 6, + 144 + ], + [ + 342, + 127, + 6, + 144 + ], + [ + 342, + 143, + 6, + 144 + ], + [ + 342, + 150, + 6, + 144 + ], + [ + 342, + 172, + 6, + 144 + ], + [ + 342, + 173, + 6, + 144 + ], + [ + 342, + 190, + 6, + 144 + ], + [ + 342, + 197, + 6, + 144 + ], + [ + 342, + 327, + 9, + 56 + ], + [ + 342, + 333, + 6, + 122 + ], + [ + 342, + 333, + 8, + 770 + ], + [ + 342, + 334, + 8, + 776 + ], + [ + 342, + 335, + 9, + 1704 + ], + [ + 342, + 336, + 6, + 144 + ], + [ + 342, + 336, + 9, + 1648 + ], + [ + 342, + 337, + 9, + 179 + ], + [ + 342, + 339, + 8, + 243 + ], + [ + 342, + 340, + 4, + 3 + ], + [ + 342, + 340, + 6, + 144 + ], + [ + 343, + 12, + 6, + 144 + ], + [ + 343, + 39, + 6, + 95 + ], + [ + 343, + 121, + 9, + 32 + ], + [ + 343, + 171, + 6, + 144 + ], + [ + 343, + 208, + 9, + 64 + ], + [ + 343, + 329, + 9, + 1704 + ], + [ + 343, + 331, + 5, + 16 + ], + [ + 343, + 332, + 5, + 16 + ], + [ + 343, + 333, + 5, + 16 + ], + [ + 343, + 333, + 6, + 22 + ], + [ + 343, + 333, + 9, + 1009 + ], + [ + 343, + 334, + 5, + 16 + ], + [ + 343, + 334, + 6, + 144 + ], + [ + 343, + 335, + 5, + 16 + ], + [ + 343, + 335, + 6, + 144 + ], + [ + 343, + 335, + 8, + 776 + ], + [ + 343, + 336, + 5, + 16 + ], + [ + 343, + 337, + 5, + 16 + ], + [ + 343, + 337, + 6, + 144 + ], + [ + 343, + 338, + 5, + 16 + ], + [ + 343, + 338, + 6, + 144 + ], + [ + 343, + 339, + 4, + 3 + ], + [ + 343, + 339, + 5, + 16 + ], + [ + 343, + 339, + 6, + 144 + ], + [ + 343, + 340, + 5, + 16 + ], + [ + 343, + 340, + 8, + 637 + ], + [ + 343, + 341, + 5, + 16 + ], + [ + 343, + 341, + 6, + 144 + ], + [ + 343, + 341, + 9, + 328 + ], + [ + 343, + 342, + 5, + 16 + ], + [ + 343, + 343, + 5, + 16 + ], + [ + 343, + 343, + 6, + 120 + ], + [ + 343, + 343, + 8, + 120 + ], + [ + 343, + 344, + 5, + 16 + ], + [ + 343, + 345, + 5, + 16 + ], + [ + 343, + 345, + 6, + 144 + ], + [ + 343, + 346, + 5, + 16 + ], + [ + 343, + 346, + 9, + 706 + ], + [ + 344, + 334, + 4, + 208 + ], + [ + 344, + 334, + 9, + 1576 + ], + [ + 344, + 336, + 4, + 208 + ], + [ + 344, + 338, + 9, + 40 + ], + [ + 344, + 340, + 4, + 205 + ], + [ + 344, + 342, + 4, + 208 + ], + [ + 344, + 344, + 4, + 208 + ], + [ + 344, + 345, + 4, + 208 + ], + [ + 344, + 346, + 4, + 208 + ], + [ + 344, + 347, + 4, + 208 + ], + [ + 344, + 347, + 5, + 16 + ], + [ + 344, + 347, + 9, + 1568 + ], + [ + 344, + 348, + 5, + 16 + ], + [ + 344, + 349, + 5, + 16 + ], + [ + 344, + 349, + 9, + 488 + ], + [ + 344, + 350, + 4, + 51 + ], + [ + 344, + 350, + 5, + 16 + ], + [ + 344, + 351, + 5, + 16 + ], + [ + 344, + 351, + 9, + 1704 + ], + [ + 345, + 338, + 4, + 208 + ], + [ + 345, + 343, + 4, + 208 + ], + [ + 345, + 343, + 9, + 1584 + ], + [ + 345, + 345, + 9, + 1115 + ], + [ + 345, + 349, + 4, + 208 + ], + [ + 345, + 349, + 9, + 1216 + ], + [ + 345, + 350, + 8, + 3 + ], + [ + 345, + 351, + 4, + 208 + ], + [ + 345, + 352, + 4, + 208 + ], + [ + 345, + 353, + 4, + 208 + ], + [ + 345, + 354, + 4, + 208 + ], + [ + 345, + 354, + 6, + 3 + ], + [ + 345, + 355, + 4, + 125 + ], + [ + 345, + 356, + 9, + 6 + ], + [ + 345, + 357, + 4, + 208 + ], + [ + 345, + 357, + 9, + 1452 + ], + [ + 346, + 340, + 9, + 1704 + ], + [ + 346, + 342, + 6, + 144 + ], + [ + 346, + 342, + 9, + 88 + ], + [ + 346, + 344, + 6, + 144 + ], + [ + 346, + 347, + 6, + 144 + ], + [ + 346, + 350, + 6, + 144 + ], + [ + 346, + 351, + 6, + 144 + ], + [ + 346, + 354, + 6, + 141 + ], + [ + 346, + 355, + 6, + 48 + ], + [ + 346, + 356, + 6, + 144 + ], + [ + 346, + 356, + 9, + 88 + ], + [ + 346, + 357, + 6, + 144 + ], + [ + 346, + 358, + 9, + 1704 + ], + [ + 346, + 359, + 7, + 160 + ], + [ + 346, + 359, + 8, + 776 + ], + [ + 346, + 360, + 7, + 416 + ], + [ + 346, + 361, + 6, + 141 + ], + [ + 346, + 361, + 7, + 332 + ], + [ + 346, + 364, + 8, + 562 + ], + [ + 347, + 333, + 4, + 208 + ], + [ + 347, + 339, + 4, + 205 + ], + [ + 347, + 341, + 4, + 208 + ], + [ + 347, + 346, + 9, + 998 + ], + [ + 347, + 347, + 9, + 136 + ], + [ + 347, + 350, + 4, + 157 + ], + [ + 347, + 350, + 9, + 1195 + ], + [ + 347, + 354, + 9, + 1437 + ], + [ + 347, + 356, + 4, + 182 + ], + [ + 347, + 356, + 9, + 1610 + ], + [ + 347, + 360, + 4, + 208 + ], + [ + 347, + 362, + 4, + 208 + ], + [ + 347, + 364, + 4, + 208 + ], + [ + 347, + 367, + 4, + 208 + ], + [ + 348, + 335, + 4, + 208 + ], + [ + 348, + 337, + 4, + 208 + ], + [ + 348, + 348, + 9, + 1704 + ], + [ + 348, + 352, + 5, + 16 + ], + [ + 348, + 352, + 9, + 1704 + ], + [ + 348, + 353, + 5, + 16 + ], + [ + 348, + 354, + 5, + 16 + ], + [ + 348, + 355, + 5, + 16 + ], + [ + 348, + 356, + 5, + 16 + ], + [ + 348, + 357, + 5, + 16 + ], + [ + 348, + 357, + 9, + 107 + ], + [ + 348, + 358, + 5, + 16 + ], + [ + 348, + 359, + 4, + 208 + ], + [ + 348, + 359, + 5, + 16 + ], + [ + 348, + 360, + 5, + 16 + ], + [ + 348, + 361, + 5, + 16 + ], + [ + 348, + 362, + 5, + 16 + ], + [ + 348, + 363, + 5, + 16 + ], + [ + 348, + 364, + 5, + 16 + ], + [ + 348, + 364, + 9, + 1704 + ], + [ + 348, + 365, + 5, + 16 + ], + [ + 348, + 365, + 7, + 314 + ], + [ + 348, + 366, + 5, + 16 + ], + [ + 348, + 367, + 5, + 16 + ], + [ + 348, + 368, + 5, + 16 + ], + [ + 348, + 369, + 5, + 16 + ], + [ + 348, + 370, + 4, + 208 + ], + [ + 348, + 370, + 5, + 16 + ], + [ + 348, + 371, + 5, + 16 + ], + [ + 348, + 372, + 5, + 16 + ], + [ + 348, + 373, + 4, + 163 + ], + [ + 348, + 373, + 5, + 16 + ], + [ + 348, + 374, + 4, + 208 + ], + [ + 348, + 374, + 5, + 16 + ], + [ + 348, + 375, + 5, + 16 + ], + [ + 348, + 376, + 5, + 16 + ], + [ + 348, + 377, + 5, + 16 + ], + [ + 348, + 378, + 5, + 16 + ], + [ + 349, + 343, + 6, + 24 + ], + [ + 349, + 344, + 9, + 1704 + ], + [ + 349, + 346, + 6, + 144 + ], + [ + 349, + 348, + 6, + 144 + ], + [ + 349, + 349, + 6, + 144 + ], + [ + 349, + 352, + 6, + 144 + ], + [ + 349, + 353, + 6, + 144 + ], + [ + 349, + 355, + 6, + 96 + ], + [ + 349, + 358, + 6, + 144 + ], + [ + 349, + 359, + 6, + 144 + ], + [ + 349, + 360, + 6, + 45 + ], + [ + 349, + 361, + 9, + 1704 + ], + [ + 349, + 362, + 6, + 144 + ], + [ + 349, + 363, + 6, + 144 + ], + [ + 349, + 364, + 6, + 144 + ], + [ + 349, + 365, + 6, + 144 + ], + [ + 349, + 374, + 6, + 40 + ], + [ + 349, + 376, + 9, + 179 + ], + [ + 349, + 378, + 8, + 237 + ], + [ + 349, + 382, + 8, + 776 + ], + [ + 349, + 384, + 8, + 776 + ], + [ + 350, + 360, + 6, + 96 + ], + [ + 350, + 404, + 9, + 1096 + ], + [ + 350, + 405, + 6, + 144 + ], + [ + 350, + 407, + 6, + 144 + ], + [ + 350, + 408, + 6, + 144 + ], + [ + 350, + 410, + 6, + 144 + ], + [ + 350, + 411, + 6, + 144 + ], + [ + 350, + 412, + 6, + 144 + ], + [ + 350, + 412, + 9, + 1648 + ], + [ + 350, + 414, + 6, + 144 + ], + [ + 350, + 416, + 6, + 144 + ], + [ + 350, + 417, + 8, + 536 + ], + [ + 350, + 419, + 6, + 144 + ], + [ + 350, + 420, + 8, + 776 + ], + [ + 350, + 421, + 6, + 144 + ], + [ + 350, + 422, + 6, + 112 + ], + [ + 350, + 422, + 9, + 840 + ], + [ + 350, + 423, + 6, + 144 + ], + [ + 350, + 423, + 8, + 480 + ], + [ + 351, + 405, + 4, + 208 + ], + [ + 351, + 406, + 4, + 112 + ], + [ + 351, + 410, + 4, + 208 + ], + [ + 351, + 412, + 4, + 208 + ], + [ + 351, + 413, + 4, + 115 + ], + [ + 351, + 414, + 4, + 208 + ], + [ + 351, + 414, + 9, + 1584 + ], + [ + 351, + 415, + 4, + 80 + ], + [ + 351, + 415, + 9, + 1704 + ], + [ + 351, + 416, + 4, + 208 + ], + [ + 351, + 416, + 9, + 1584 + ], + [ + 351, + 417, + 4, + 208 + ], + [ + 351, + 417, + 6, + 29 + ], + [ + 351, + 418, + 8, + 29 + ], + [ + 351, + 420, + 4, + 208 + ], + [ + 351, + 420, + 9, + 475 + ], + [ + 352, + 404, + 6, + 136 + ], + [ + 352, + 406, + 6, + 112 + ], + [ + 352, + 408, + 8, + 369 + ], + [ + 352, + 408, + 9, + 1423 + ], + [ + 352, + 410, + 9, + 1098 + ], + [ + 352, + 413, + 6, + 144 + ], + [ + 352, + 415, + 6, + 45 + ], + [ + 352, + 416, + 9, + 120 + ], + [ + 352, + 417, + 6, + 115 + ], + [ + 352, + 421, + 9, + 1431 + ], + [ + 352, + 422, + 6, + 32 + ], + [ + 352, + 423, + 8, + 56 + ], + [ + 352, + 425, + 4, + 3 + ], + [ + 352, + 426, + 6, + 144 + ], + [ + 352, + 428, + 6, + 144 + ], + [ + 352, + 428, + 8, + 776 + ], + [ + 352, + 429, + 6, + 144 + ], + [ + 352, + 429, + 8, + 103 + ], + [ + 352, + 430, + 6, + 144 + ], + [ + 352, + 431, + 6, + 144 + ], + [ + 353, + 374, + 9, + 1704 + ], + [ + 353, + 405, + 5, + 16 + ], + [ + 353, + 406, + 4, + 96 + ], + [ + 353, + 406, + 5, + 16 + ], + [ + 353, + 407, + 4, + 208 + ], + [ + 353, + 407, + 5, + 16 + ], + [ + 353, + 408, + 4, + 208 + ], + [ + 353, + 408, + 5, + 16 + ], + [ + 353, + 409, + 5, + 16 + ], + [ + 353, + 410, + 5, + 16 + ], + [ + 353, + 411, + 5, + 16 + ], + [ + 353, + 412, + 5, + 16 + ], + [ + 353, + 413, + 5, + 16 + ], + [ + 353, + 414, + 5, + 16 + ], + [ + 353, + 415, + 5, + 16 + ], + [ + 353, + 416, + 5, + 16 + ], + [ + 353, + 417, + 5, + 16 + ], + [ + 353, + 418, + 5, + 16 + ], + [ + 353, + 418, + 9, + 1704 + ], + [ + 353, + 419, + 5, + 16 + ], + [ + 353, + 419, + 9, + 120 + ], + [ + 353, + 420, + 5, + 16 + ], + [ + 353, + 421, + 4, + 208 + ], + [ + 353, + 421, + 5, + 16 + ], + [ + 353, + 422, + 4, + 208 + ], + [ + 353, + 422, + 5, + 16 + ], + [ + 353, + 423, + 5, + 16 + ], + [ + 353, + 424, + 5, + 16 + ], + [ + 353, + 425, + 5, + 16 + ], + [ + 353, + 425, + 9, + 994 + ], + [ + 353, + 426, + 5, + 16 + ], + [ + 353, + 426, + 9, + 854 + ], + [ + 353, + 427, + 5, + 16 + ], + [ + 353, + 428, + 4, + 208 + ], + [ + 353, + 428, + 5, + 16 + ], + [ + 353, + 429, + 5, + 16 + ], + [ + 353, + 430, + 5, + 16 + ], + [ + 353, + 431, + 4, + 208 + ], + [ + 353, + 431, + 5, + 16 + ], + [ + 353, + 432, + 5, + 16 + ], + [ + 354, + 405, + 8, + 776 + ], + [ + 354, + 406, + 6, + 32 + ], + [ + 354, + 409, + 6, + 144 + ], + [ + 354, + 410, + 9, + 518 + ], + [ + 354, + 418, + 6, + 144 + ], + [ + 354, + 420, + 6, + 144 + ], + [ + 354, + 422, + 8, + 776 + ], + [ + 354, + 424, + 6, + 144 + ], + [ + 354, + 425, + 6, + 144 + ], + [ + 354, + 426, + 8, + 223 + ], + [ + 354, + 427, + 6, + 144 + ], + [ + 354, + 429, + 4, + 3 + ], + [ + 354, + 430, + 9, + 1704 + ], + [ + 354, + 434, + 6, + 144 + ], + [ + 354, + 436, + 6, + 144 + ], + [ + 354, + 436, + 8, + 14 + ], + [ + 354, + 437, + 6, + 144 + ], + [ + 354, + 437, + 9, + 870 + ], + [ + 354, + 438, + 6, + 144 + ], + [ + 354, + 439, + 6, + 29 + ], + [ + 354, + 440, + 6, + 144 + ], + [ + 354, + 440, + 9, + 495 + ], + [ + 354, + 441, + 6, + 144 + ], + [ + 355, + 415, + 4, + 128 + ], + [ + 355, + 419, + 4, + 208 + ], + [ + 355, + 419, + 9, + 1584 + ], + [ + 355, + 423, + 4, + 208 + ], + [ + 355, + 424, + 9, + 1704 + ], + [ + 355, + 425, + 4, + 205 + ], + [ + 355, + 425, + 9, + 349 + ], + [ + 355, + 432, + 4, + 208 + ], + [ + 355, + 433, + 4, + 208 + ], + [ + 355, + 434, + 4, + 208 + ], + [ + 355, + 434, + 9, + 32 + ], + [ + 355, + 435, + 4, + 208 + ], + [ + 355, + 437, + 4, + 208 + ], + [ + 355, + 438, + 9, + 1704 + ], + [ + 355, + 442, + 7, + 6 + ], + [ + 356, + 415, + 6, + 99 + ], + [ + 356, + 427, + 9, + 1118 + ], + [ + 356, + 431, + 9, + 1704 + ], + [ + 356, + 432, + 7, + 160 + ], + [ + 356, + 435, + 7, + 416 + ], + [ + 356, + 443, + 7, + 416 + ], + [ + 356, + 447, + 7, + 416 + ], + [ + 356, + 447, + 9, + 762 + ], + [ + 356, + 449, + 7, + 154 + ], + [ + 356, + 450, + 7, + 416 + ], + [ + 356, + 451, + 7, + 416 + ], + [ + 356, + 452, + 7, + 416 + ], + [ + 356, + 453, + 6, + 80 + ], + [ + 356, + 453, + 7, + 416 + ], + [ + 356, + 453, + 8, + 179 + ], + [ + 357, + 414, + 9, + 120 + ], + [ + 357, + 421, + 9, + 273 + ], + [ + 357, + 432, + 6, + 144 + ], + [ + 357, + 433, + 6, + 144 + ], + [ + 357, + 435, + 6, + 144 + ], + [ + 357, + 439, + 9, + 1704 + ], + [ + 357, + 442, + 6, + 144 + ], + [ + 357, + 443, + 6, + 144 + ], + [ + 357, + 444, + 6, + 144 + ], + [ + 357, + 445, + 6, + 144 + ], + [ + 357, + 446, + 6, + 144 + ], + [ + 357, + 447, + 6, + 144 + ], + [ + 357, + 448, + 6, + 144 + ], + [ + 357, + 448, + 8, + 776 + ], + [ + 357, + 449, + 6, + 144 + ], + [ + 357, + 451, + 6, + 144 + ], + [ + 357, + 451, + 8, + 776 + ], + [ + 357, + 452, + 9, + 1487 + ], + [ + 357, + 453, + 6, + 64 + ], + [ + 357, + 454, + 8, + 240 + ], + [ + 358, + 411, + 4, + 208 + ], + [ + 358, + 424, + 4, + 128 + ], + [ + 358, + 433, + 9, + 1704 + ], + [ + 358, + 435, + 9, + 1704 + ], + [ + 358, + 443, + 4, + 208 + ], + [ + 358, + 445, + 4, + 208 + ], + [ + 358, + 451, + 4, + 208 + ], + [ + 358, + 455, + 4, + 208 + ], + [ + 358, + 456, + 4, + 208 + ], + [ + 358, + 458, + 4, + 208 + ], + [ + 358, + 462, + 4, + 208 + ], + [ + 358, + 462, + 9, + 264 + ], + [ + 358, + 466, + 9, + 1704 + ], + [ + 359, + 409, + 4, + 208 + ], + [ + 359, + 424, + 4, + 80 + ], + [ + 359, + 426, + 4, + 208 + ], + [ + 359, + 436, + 4, + 208 + ], + [ + 359, + 439, + 4, + 208 + ], + [ + 359, + 440, + 9, + 1209 + ], + [ + 359, + 441, + 9, + 1704 + ], + [ + 359, + 456, + 9, + 1704 + ], + [ + 359, + 458, + 9, + 5 + ], + [ + 359, + 460, + 4, + 208 + ], + [ + 359, + 461, + 9, + 754 + ], + [ + 359, + 464, + 4, + 208 + ], + [ + 359, + 465, + 4, + 48 + ], + [ + 359, + 466, + 4, + 208 + ], + [ + 359, + 467, + 4, + 208 + ], + [ + 360, + 418, + 4, + 208 + ], + [ + 360, + 427, + 4, + 208 + ], + [ + 360, + 429, + 4, + 205 + ], + [ + 360, + 430, + 4, + 208 + ], + [ + 360, + 438, + 4, + 128 + ], + [ + 360, + 450, + 9, + 1528 + ], + [ + 360, + 454, + 4, + 208 + ], + [ + 360, + 455, + 6, + 3 + ], + [ + 360, + 465, + 9, + 1443 + ], + [ + 360, + 469, + 9, + 1704 + ], + [ + 360, + 470, + 4, + 208 + ], + [ + 360, + 470, + 9, + 698 + ], + [ + 360, + 471, + 4, + 208 + ], + [ + 360, + 481, + 4, + 208 + ], + [ + 360, + 481, + 8, + 3 + ], + [ + 361, + 433, + 5, + 16 + ], + [ + 361, + 434, + 5, + 16 + ], + [ + 361, + 435, + 5, + 16 + ], + [ + 361, + 436, + 5, + 16 + ], + [ + 361, + 437, + 5, + 16 + ], + [ + 361, + 438, + 5, + 16 + ], + [ + 361, + 439, + 5, + 16 + ], + [ + 361, + 440, + 5, + 16 + ], + [ + 361, + 441, + 5, + 16 + ], + [ + 361, + 442, + 5, + 16 + ], + [ + 361, + 443, + 5, + 16 + ], + [ + 361, + 444, + 5, + 16 + ], + [ + 361, + 445, + 5, + 16 + ], + [ + 361, + 446, + 5, + 16 + ], + [ + 361, + 446, + 9, + 1141 + ], + [ + 361, + 447, + 5, + 16 + ], + [ + 361, + 448, + 5, + 16 + ], + [ + 361, + 449, + 5, + 16 + ], + [ + 361, + 450, + 5, + 16 + ], + [ + 361, + 451, + 5, + 16 + ], + [ + 361, + 452, + 5, + 16 + ], + [ + 361, + 453, + 5, + 16 + ], + [ + 361, + 454, + 5, + 16 + ], + [ + 361, + 455, + 5, + 16 + ], + [ + 361, + 455, + 9, + 533 + ], + [ + 361, + 456, + 5, + 16 + ], + [ + 361, + 457, + 5, + 16 + ], + [ + 361, + 458, + 5, + 16 + ], + [ + 361, + 459, + 5, + 16 + ], + [ + 361, + 460, + 5, + 16 + ], + [ + 361, + 461, + 5, + 16 + ], + [ + 361, + 462, + 5, + 16 + ], + [ + 361, + 463, + 5, + 16 + ], + [ + 361, + 464, + 5, + 16 + ], + [ + 361, + 465, + 5, + 16 + ], + [ + 361, + 465, + 7, + 416 + ], + [ + 361, + 466, + 5, + 16 + ], + [ + 361, + 467, + 5, + 16 + ], + [ + 361, + 467, + 7, + 320 + ], + [ + 361, + 468, + 5, + 16 + ], + [ + 361, + 468, + 7, + 416 + ], + [ + 361, + 469, + 5, + 16 + ], + [ + 361, + 470, + 5, + 16 + ], + [ + 361, + 470, + 9, + 1006 + ], + [ + 361, + 471, + 5, + 16 + ], + [ + 361, + 472, + 5, + 16 + ], + [ + 361, + 473, + 5, + 16 + ], + [ + 361, + 474, + 5, + 16 + ], + [ + 361, + 475, + 5, + 16 + ], + [ + 361, + 476, + 5, + 16 + ], + [ + 361, + 477, + 5, + 16 + ], + [ + 361, + 478, + 5, + 16 + ], + [ + 361, + 478, + 7, + 416 + ], + [ + 361, + 479, + 5, + 16 + ], + [ + 361, + 480, + 5, + 16 + ], + [ + 361, + 480, + 9, + 1704 + ], + [ + 361, + 481, + 5, + 16 + ], + [ + 361, + 482, + 5, + 16 + ], + [ + 361, + 482, + 7, + 416 + ], + [ + 362, + 417, + 9, + 1704 + ], + [ + 362, + 436, + 9, + 1704 + ], + [ + 362, + 438, + 4, + 80 + ], + [ + 362, + 440, + 4, + 35 + ], + [ + 362, + 441, + 4, + 208 + ], + [ + 362, + 446, + 4, + 208 + ], + [ + 362, + 453, + 4, + 208 + ], + [ + 362, + 454, + 9, + 1704 + ], + [ + 362, + 468, + 4, + 208 + ], + [ + 362, + 468, + 9, + 264 + ], + [ + 362, + 469, + 4, + 208 + ], + [ + 362, + 472, + 4, + 170 + ], + [ + 362, + 478, + 4, + 208 + ], + [ + 362, + 480, + 4, + 51 + ], + [ + 362, + 482, + 4, + 208 + ], + [ + 363, + 413, + 9, + 1704 + ], + [ + 363, + 440, + 4, + 173 + ], + [ + 363, + 450, + 4, + 208 + ], + [ + 363, + 453, + 8, + 3 + ], + [ + 363, + 457, + 4, + 208 + ], + [ + 363, + 461, + 9, + 950 + ], + [ + 363, + 463, + 4, + 208 + ], + [ + 363, + 465, + 4, + 160 + ], + [ + 363, + 473, + 4, + 208 + ], + [ + 363, + 475, + 4, + 208 + ], + [ + 363, + 479, + 9, + 1015 + ], + [ + 363, + 482, + 6, + 3 + ], + [ + 363, + 485, + 4, + 208 + ], + [ + 363, + 487, + 4, + 208 + ], + [ + 363, + 491, + 9, + 1704 + ], + [ + 364, + 413, + 4, + 93 + ], + [ + 364, + 427, + 9, + 528 + ], + [ + 364, + 448, + 9, + 1704 + ], + [ + 364, + 461, + 4, + 208 + ], + [ + 364, + 462, + 9, + 1440 + ], + [ + 364, + 481, + 9, + 1704 + ], + [ + 364, + 488, + 4, + 208 + ], + [ + 364, + 489, + 4, + 25 + ], + [ + 364, + 498, + 4, + 208 + ], + [ + 364, + 502, + 4, + 208 + ], + [ + 364, + 503, + 4, + 208 + ], + [ + 364, + 504, + 4, + 208 + ], + [ + 364, + 506, + 4, + 208 + ], + [ + 364, + 507, + 4, + 202 + ], + [ + 364, + 507, + 5, + 16 + ], + [ + 365, + 434, + 9, + 1051 + ], + [ + 365, + 437, + 9, + 834 + ], + [ + 365, + 439, + 6, + 115 + ], + [ + 365, + 450, + 6, + 144 + ], + [ + 365, + 454, + 6, + 144 + ], + [ + 365, + 455, + 6, + 141 + ], + [ + 365, + 456, + 6, + 144 + ], + [ + 365, + 458, + 6, + 93 + ], + [ + 365, + 458, + 9, + 1699 + ], + [ + 365, + 459, + 6, + 144 + ], + [ + 365, + 460, + 6, + 144 + ], + [ + 365, + 463, + 6, + 144 + ], + [ + 365, + 464, + 6, + 112 + ], + [ + 365, + 466, + 6, + 144 + ], + [ + 365, + 468, + 6, + 144 + ], + [ + 365, + 469, + 6, + 144 + ], + [ + 365, + 479, + 6, + 35 + ], + [ + 365, + 493, + 8, + 240 + ], + [ + 365, + 507, + 8, + 776 + ], + [ + 365, + 508, + 8, + 776 + ], + [ + 366, + 113, + 7, + 416 + ], + [ + 366, + 117, + 9, + 1612 + ], + [ + 366, + 119, + 7, + 416 + ], + [ + 366, + 122, + 9, + 1704 + ], + [ + 366, + 124, + 7, + 416 + ], + [ + 366, + 135, + 7, + 416 + ], + [ + 366, + 138, + 7, + 416 + ], + [ + 366, + 140, + 7, + 222 + ], + [ + 366, + 142, + 7, + 416 + ], + [ + 366, + 144, + 7, + 416 + ], + [ + 366, + 146, + 7, + 28 + ], + [ + 366, + 156, + 9, + 271 + ], + [ + 366, + 163, + 7, + 416 + ], + [ + 366, + 167, + 4, + 3 + ], + [ + 367, + 57, + 6, + 144 + ], + [ + 367, + 63, + 6, + 144 + ], + [ + 367, + 85, + 9, + 179 + ], + [ + 367, + 88, + 6, + 144 + ], + [ + 367, + 90, + 6, + 144 + ], + [ + 367, + 97, + 6, + 144 + ], + [ + 367, + 105, + 6, + 144 + ], + [ + 367, + 106, + 6, + 61 + ], + [ + 367, + 116, + 6, + 144 + ], + [ + 367, + 129, + 6, + 144 + ], + [ + 367, + 133, + 6, + 144 + ], + [ + 367, + 134, + 6, + 144 + ], + [ + 367, + 136, + 9, + 1704 + ], + [ + 367, + 140, + 6, + 144 + ], + [ + 367, + 161, + 4, + 3 + ], + [ + 367, + 166, + 6, + 144 + ], + [ + 367, + 167, + 9, + 1704 + ], + [ + 367, + 170, + 8, + 776 + ], + [ + 367, + 172, + 8, + 237 + ], + [ + 367, + 173, + 8, + 776 + ], + [ + 368, + 83, + 6, + 3 + ], + [ + 368, + 90, + 9, + 1704 + ], + [ + 368, + 109, + 4, + 208 + ], + [ + 368, + 111, + 4, + 78 + ], + [ + 368, + 149, + 9, + 1704 + ], + [ + 368, + 160, + 4, + 208 + ], + [ + 368, + 164, + 4, + 208 + ], + [ + 368, + 168, + 8, + 3 + ], + [ + 368, + 171, + 4, + 208 + ], + [ + 368, + 174, + 4, + 208 + ], + [ + 368, + 176, + 4, + 200 + ], + [ + 368, + 178, + 9, + 261 + ], + [ + 368, + 180, + 4, + 208 + ], + [ + 368, + 181, + 4, + 55 + ], + [ + 368, + 183, + 9, + 1704 + ], + [ + 368, + 186, + 4, + 208 + ], + [ + 369, + 83, + 9, + 1704 + ], + [ + 369, + 96, + 6, + 3 + ], + [ + 369, + 102, + 4, + 120 + ], + [ + 369, + 103, + 9, + 76 + ], + [ + 369, + 119, + 4, + 208 + ], + [ + 369, + 126, + 4, + 208 + ], + [ + 369, + 131, + 9, + 1704 + ], + [ + 369, + 140, + 4, + 208 + ], + [ + 369, + 151, + 4, + 208 + ], + [ + 369, + 154, + 9, + 185 + ], + [ + 369, + 156, + 4, + 208 + ], + [ + 369, + 157, + 9, + 1704 + ], + [ + 369, + 163, + 4, + 208 + ], + [ + 369, + 173, + 4, + 208 + ], + [ + 369, + 176, + 4, + 5 + ], + [ + 369, + 176, + 8, + 3 + ], + [ + 369, + 190, + 4, + 208 + ], + [ + 370, + 125, + 7, + 416 + ], + [ + 370, + 152, + 7, + 356 + ], + [ + 370, + 158, + 7, + 416 + ], + [ + 370, + 170, + 7, + 416 + ], + [ + 370, + 172, + 7, + 192 + ], + [ + 370, + 174, + 7, + 416 + ], + [ + 370, + 178, + 7, + 416 + ], + [ + 370, + 188, + 9, + 297 + ], + [ + 370, + 193, + 7, + 118 + ], + [ + 370, + 193, + 9, + 1674 + ], + [ + 370, + 196, + 9, + 1616 + ], + [ + 370, + 199, + 4, + 3 + ], + [ + 370, + 199, + 7, + 416 + ], + [ + 370, + 202, + 7, + 416 + ], + [ + 371, + 92, + 4, + 208 + ], + [ + 371, + 112, + 4, + 129 + ], + [ + 371, + 113, + 9, + 1616 + ], + [ + 371, + 120, + 9, + 1101 + ], + [ + 371, + 134, + 9, + 1689 + ], + [ + 371, + 138, + 4, + 77 + ], + [ + 371, + 141, + 4, + 41 + ], + [ + 371, + 162, + 4, + 208 + ], + [ + 371, + 175, + 4, + 208 + ], + [ + 371, + 178, + 4, + 208 + ], + [ + 371, + 182, + 4, + 208 + ], + [ + 371, + 185, + 9, + 970 + ], + [ + 371, + 191, + 4, + 208 + ], + [ + 371, + 199, + 4, + 89 + ], + [ + 371, + 202, + 4, + 208 + ], + [ + 372, + 100, + 9, + 163 + ], + [ + 372, + 120, + 9, + 588 + ], + [ + 372, + 130, + 4, + 108 + ], + [ + 372, + 153, + 4, + 176 + ], + [ + 372, + 153, + 9, + 1616 + ], + [ + 372, + 169, + 4, + 208 + ], + [ + 372, + 170, + 4, + 208 + ], + [ + 372, + 176, + 9, + 1425 + ], + [ + 372, + 181, + 4, + 153 + ], + [ + 372, + 189, + 4, + 208 + ], + [ + 372, + 211, + 4, + 208 + ], + [ + 372, + 212, + 4, + 107 + ], + [ + 372, + 215, + 4, + 208 + ], + [ + 372, + 216, + 4, + 208 + ], + [ + 372, + 216, + 9, + 1584 + ], + [ + 373, + 95, + 9, + 1704 + ], + [ + 373, + 125, + 6, + 3 + ], + [ + 373, + 138, + 4, + 128 + ], + [ + 373, + 152, + 9, + 1704 + ], + [ + 373, + 157, + 4, + 208 + ], + [ + 373, + 168, + 4, + 208 + ], + [ + 373, + 179, + 4, + 208 + ], + [ + 373, + 188, + 9, + 261 + ], + [ + 373, + 189, + 9, + 1704 + ], + [ + 373, + 190, + 8, + 3 + ], + [ + 373, + 195, + 4, + 208 + ], + [ + 373, + 197, + 4, + 208 + ], + [ + 373, + 213, + 4, + 205 + ], + [ + 373, + 217, + 4, + 208 + ], + [ + 373, + 218, + 4, + 208 + ], + [ + 374, + 95, + 6, + 144 + ], + [ + 374, + 100, + 6, + 122 + ], + [ + 374, + 118, + 6, + 144 + ], + [ + 374, + 122, + 6, + 144 + ], + [ + 374, + 139, + 6, + 144 + ], + [ + 374, + 141, + 6, + 144 + ], + [ + 374, + 148, + 6, + 144 + ], + [ + 374, + 155, + 6, + 144 + ], + [ + 374, + 156, + 6, + 144 + ], + [ + 374, + 159, + 6, + 144 + ], + [ + 374, + 160, + 6, + 144 + ], + [ + 374, + 165, + 8, + 309 + ], + [ + 374, + 180, + 6, + 144 + ], + [ + 374, + 181, + 6, + 83 + ], + [ + 374, + 199, + 8, + 131 + ], + [ + 374, + 199, + 9, + 1661 + ], + [ + 374, + 200, + 9, + 1704 + ], + [ + 374, + 201, + 9, + 184 + ], + [ + 374, + 204, + 7, + 6 + ], + [ + 374, + 205, + 9, + 35 + ], + [ + 374, + 212, + 8, + 709 + ], + [ + 374, + 229, + 8, + 640 + ], + [ + 375, + 108, + 6, + 3 + ], + [ + 375, + 137, + 9, + 1704 + ], + [ + 375, + 199, + 9, + 43 + ], + [ + 375, + 205, + 4, + 85 + ], + [ + 375, + 213, + 5, + 3 + ], + [ + 375, + 216, + 5, + 16 + ], + [ + 375, + 217, + 5, + 16 + ], + [ + 375, + 218, + 5, + 16 + ], + [ + 375, + 218, + 8, + 3 + ], + [ + 375, + 219, + 5, + 16 + ], + [ + 375, + 220, + 5, + 16 + ], + [ + 375, + 221, + 5, + 16 + ], + [ + 375, + 221, + 7, + 416 + ], + [ + 375, + 222, + 5, + 16 + ], + [ + 375, + 223, + 4, + 208 + ], + [ + 375, + 223, + 5, + 16 + ], + [ + 375, + 224, + 5, + 16 + ], + [ + 375, + 225, + 5, + 16 + ], + [ + 375, + 226, + 5, + 16 + ], + [ + 375, + 227, + 5, + 16 + ], + [ + 375, + 228, + 5, + 16 + ], + [ + 375, + 228, + 7, + 378 + ], + [ + 375, + 229, + 5, + 16 + ], + [ + 375, + 229, + 9, + 1525 + ], + [ + 375, + 230, + 4, + 208 + ], + [ + 375, + 230, + 5, + 16 + ], + [ + 375, + 231, + 4, + 208 + ], + [ + 375, + 231, + 5, + 16 + ], + [ + 375, + 232, + 5, + 16 + ], + [ + 375, + 233, + 5, + 16 + ], + [ + 375, + 234, + 5, + 16 + ], + [ + 375, + 234, + 9, + 1704 + ], + [ + 375, + 235, + 4, + 120 + ], + [ + 375, + 235, + 5, + 16 + ], + [ + 375, + 236, + 5, + 16 + ], + [ + 375, + 237, + 4, + 208 + ], + [ + 375, + 237, + 5, + 16 + ], + [ + 376, + 111, + 6, + 144 + ], + [ + 376, + 117, + 6, + 144 + ], + [ + 376, + 120, + 6, + 144 + ], + [ + 376, + 135, + 6, + 144 + ], + [ + 376, + 142, + 6, + 144 + ], + [ + 376, + 167, + 6, + 144 + ], + [ + 376, + 170, + 6, + 144 + ], + [ + 376, + 174, + 6, + 144 + ], + [ + 376, + 176, + 6, + 144 + ], + [ + 376, + 178, + 9, + 1443 + ], + [ + 376, + 181, + 6, + 61 + ], + [ + 376, + 186, + 6, + 144 + ], + [ + 376, + 187, + 6, + 144 + ], + [ + 376, + 194, + 9, + 440 + ], + [ + 376, + 213, + 4, + 3 + ], + [ + 376, + 223, + 9, + 1704 + ], + [ + 376, + 224, + 6, + 144 + ], + [ + 376, + 236, + 8, + 237 + ], + [ + 376, + 242, + 8, + 776 + ], + [ + 376, + 243, + 8, + 776 + ], + [ + 377, + 121, + 7, + 6 + ], + [ + 377, + 133, + 9, + 982 + ], + [ + 377, + 184, + 9, + 1279 + ], + [ + 377, + 187, + 9, + 362 + ], + [ + 377, + 206, + 9, + 1704 + ], + [ + 377, + 209, + 4, + 208 + ], + [ + 377, + 212, + 9, + 1046 + ], + [ + 377, + 240, + 4, + 140 + ], + [ + 377, + 243, + 4, + 208 + ], + [ + 377, + 244, + 4, + 208 + ], + [ + 377, + 245, + 4, + 193 + ], + [ + 377, + 246, + 4, + 208 + ], + [ + 377, + 247, + 4, + 208 + ], + [ + 377, + 248, + 4, + 208 + ], + [ + 377, + 249, + 4, + 208 + ], + [ + 378, + 162, + 9, + 1704 + ], + [ + 378, + 213, + 9, + 264 + ], + [ + 378, + 226, + 9, + 1704 + ], + [ + 378, + 243, + 9, + 1704 + ], + [ + 378, + 253, + 4, + 3 + ], + [ + 379, + 203, + 9, + 1704 + ], + [ + 379, + 233, + 6, + 3 + ], + [ + 379, + 244, + 9, + 403 + ], + [ + 379, + 245, + 4, + 15 + ], + [ + 379, + 245, + 8, + 3 + ], + [ + 379, + 250, + 4, + 208 + ], + [ + 379, + 253, + 4, + 205 + ], + [ + 379, + 253, + 9, + 1587 + ], + [ + 379, + 254, + 4, + 208 + ], + [ + 379, + 255, + 4, + 208 + ], + [ + 379, + 257, + 4, + 208 + ], + [ + 379, + 258, + 4, + 208 + ], + [ + 379, + 259, + 4, + 113 + ], + [ + 379, + 259, + 9, + 1679 + ], + [ + 379, + 260, + 4, + 208 + ], + [ + 379, + 261, + 4, + 208 + ], + [ + 380, + 187, + 9, + 1342 + ], + [ + 380, + 201, + 9, + 1072 + ], + [ + 380, + 205, + 7, + 90 + ], + [ + 380, + 251, + 4, + 208 + ], + [ + 380, + 252, + 4, + 205 + ], + [ + 380, + 252, + 9, + 1587 + ], + [ + 380, + 255, + 9, + 1330 + ], + [ + 380, + 256, + 4, + 208 + ], + [ + 380, + 259, + 4, + 92 + ], + [ + 380, + 262, + 4, + 208 + ], + [ + 380, + 263, + 4, + 208 + ], + [ + 380, + 264, + 4, + 208 + ], + [ + 380, + 265, + 4, + 208 + ], + [ + 380, + 266, + 4, + 202 + ], + [ + 381, + 144, + 6, + 144 + ], + [ + 381, + 149, + 6, + 144 + ], + [ + 381, + 154, + 9, + 1519 + ], + [ + 381, + 162, + 6, + 144 + ], + [ + 381, + 164, + 6, + 144 + ], + [ + 381, + 168, + 6, + 144 + ], + [ + 381, + 182, + 6, + 144 + ], + [ + 381, + 191, + 6, + 77 + ], + [ + 381, + 198, + 6, + 144 + ], + [ + 381, + 206, + 6, + 144 + ], + [ + 381, + 231, + 9, + 924 + ], + [ + 381, + 242, + 9, + 1704 + ], + [ + 381, + 255, + 5, + 16 + ], + [ + 381, + 256, + 5, + 16 + ], + [ + 381, + 257, + 5, + 16 + ], + [ + 381, + 258, + 5, + 16 + ], + [ + 381, + 259, + 5, + 16 + ], + [ + 381, + 260, + 5, + 16 + ], + [ + 381, + 261, + 5, + 16 + ], + [ + 381, + 262, + 5, + 16 + ], + [ + 381, + 263, + 5, + 16 + ], + [ + 381, + 264, + 5, + 16 + ], + [ + 381, + 265, + 5, + 16 + ], + [ + 381, + 266, + 5, + 16 + ], + [ + 381, + 266, + 8, + 776 + ], + [ + 381, + 267, + 4, + 205 + ], + [ + 381, + 267, + 5, + 16 + ], + [ + 381, + 268, + 5, + 16 + ], + [ + 381, + 269, + 4, + 86 + ], + [ + 381, + 269, + 5, + 16 + ], + [ + 381, + 270, + 5, + 16 + ], + [ + 381, + 271, + 5, + 16 + ], + [ + 381, + 271, + 8, + 453 + ], + [ + 382, + 247, + 9, + 239 + ], + [ + 382, + 259, + 9, + 25 + ], + [ + 382, + 263, + 9, + 1704 + ], + [ + 382, + 264, + 9, + 1704 + ], + [ + 382, + 265, + 9, + 1704 + ], + [ + 382, + 266, + 4, + 6 + ], + [ + 382, + 268, + 4, + 208 + ], + [ + 382, + 269, + 4, + 122 + ], + [ + 382, + 270, + 4, + 208 + ], + [ + 382, + 271, + 4, + 208 + ], + [ + 382, + 272, + 4, + 208 + ], + [ + 382, + 273, + 4, + 208 + ], + [ + 382, + 274, + 4, + 208 + ], + [ + 382, + 275, + 4, + 208 + ], + [ + 382, + 276, + 4, + 208 + ], + [ + 383, + 163, + 6, + 144 + ], + [ + 383, + 181, + 9, + 359 + ], + [ + 383, + 194, + 6, + 144 + ], + [ + 383, + 201, + 6, + 16 + ], + [ + 383, + 212, + 6, + 144 + ], + [ + 383, + 213, + 6, + 144 + ], + [ + 383, + 237, + 9, + 1689 + ], + [ + 383, + 239, + 9, + 1704 + ], + [ + 383, + 272, + 5, + 16 + ], + [ + 383, + 273, + 5, + 16 + ], + [ + 383, + 274, + 5, + 16 + ], + [ + 383, + 275, + 5, + 16 + ], + [ + 383, + 276, + 5, + 16 + ], + [ + 383, + 277, + 4, + 208 + ], + [ + 383, + 277, + 5, + 16 + ], + [ + 383, + 277, + 8, + 56 + ], + [ + 383, + 278, + 4, + 208 + ], + [ + 383, + 278, + 5, + 16 + ], + [ + 383, + 279, + 4, + 208 + ], + [ + 383, + 279, + 5, + 16 + ], + [ + 383, + 280, + 4, + 208 + ], + [ + 383, + 280, + 5, + 16 + ], + [ + 383, + 281, + 4, + 208 + ], + [ + 383, + 281, + 5, + 16 + ], + [ + 383, + 281, + 8, + 536 + ], + [ + 383, + 281, + 9, + 1032 + ], + [ + 384, + 169, + 6, + 144 + ], + [ + 384, + 177, + 6, + 144 + ], + [ + 384, + 193, + 6, + 144 + ], + [ + 384, + 200, + 6, + 144 + ], + [ + 384, + 204, + 6, + 144 + ], + [ + 384, + 210, + 9, + 1616 + ], + [ + 384, + 235, + 6, + 53 + ], + [ + 384, + 236, + 9, + 1251 + ], + [ + 384, + 261, + 9, + 1704 + ], + [ + 384, + 282, + 4, + 208 + ], + [ + 384, + 282, + 5, + 16 + ], + [ + 384, + 283, + 4, + 208 + ], + [ + 384, + 283, + 5, + 16 + ], + [ + 384, + 284, + 4, + 107 + ], + [ + 384, + 284, + 5, + 16 + ], + [ + 384, + 284, + 9, + 32 + ], + [ + 384, + 285, + 4, + 208 + ], + [ + 384, + 285, + 5, + 16 + ], + [ + 384, + 286, + 4, + 208 + ], + [ + 384, + 286, + 5, + 16 + ], + [ + 384, + 286, + 8, + 773 + ], + [ + 385, + 183, + 6, + 144 + ], + [ + 385, + 203, + 6, + 144 + ], + [ + 385, + 207, + 6, + 144 + ], + [ + 385, + 209, + 9, + 1704 + ], + [ + 385, + 219, + 6, + 144 + ], + [ + 385, + 220, + 6, + 123 + ], + [ + 385, + 230, + 6, + 130 + ], + [ + 385, + 240, + 7, + 6 + ], + [ + 385, + 249, + 9, + 1224 + ], + [ + 385, + 276, + 9, + 1616 + ], + [ + 385, + 284, + 4, + 101 + ], + [ + 385, + 287, + 4, + 208 + ], + [ + 385, + 287, + 5, + 16 + ], + [ + 385, + 288, + 4, + 208 + ], + [ + 385, + 289, + 4, + 208 + ], + [ + 385, + 289, + 5, + 11 + ], + [ + 385, + 289, + 8, + 53 + ], + [ + 385, + 290, + 4, + 208 + ], + [ + 385, + 290, + 8, + 776 + ], + [ + 386, + 184, + 6, + 144 + ], + [ + 386, + 185, + 6, + 144 + ], + [ + 386, + 188, + 6, + 144 + ], + [ + 386, + 189, + 6, + 144 + ], + [ + 386, + 190, + 9, + 1337 + ], + [ + 386, + 192, + 6, + 144 + ], + [ + 386, + 199, + 6, + 144 + ], + [ + 386, + 201, + 6, + 128 + ], + [ + 386, + 211, + 6, + 144 + ], + [ + 386, + 222, + 6, + 144 + ], + [ + 386, + 226, + 6, + 144 + ], + [ + 386, + 228, + 6, + 141 + ], + [ + 386, + 232, + 6, + 133 + ], + [ + 386, + 232, + 9, + 1132 + ], + [ + 386, + 235, + 6, + 91 + ], + [ + 386, + 251, + 9, + 30 + ], + [ + 386, + 267, + 4, + 3 + ], + [ + 386, + 274, + 9, + 1088 + ], + [ + 386, + 289, + 8, + 483 + ], + [ + 386, + 291, + 8, + 536 + ], + [ + 386, + 294, + 8, + 770 + ], + [ + 387, + 195, + 6, + 144 + ], + [ + 387, + 205, + 6, + 144 + ], + [ + 387, + 208, + 6, + 144 + ], + [ + 387, + 209, + 6, + 144 + ], + [ + 387, + 214, + 9, + 1704 + ], + [ + 387, + 216, + 6, + 144 + ], + [ + 387, + 217, + 6, + 144 + ], + [ + 387, + 220, + 6, + 18 + ], + [ + 387, + 225, + 6, + 59 + ], + [ + 387, + 244, + 6, + 144 + ], + [ + 387, + 249, + 9, + 289 + ], + [ + 387, + 251, + 9, + 827 + ], + [ + 387, + 271, + 9, + 449 + ], + [ + 387, + 286, + 8, + 3 + ], + [ + 387, + 291, + 4, + 208 + ], + [ + 387, + 294, + 4, + 208 + ], + [ + 387, + 294, + 8, + 6 + ], + [ + 387, + 295, + 4, + 83 + ], + [ + 387, + 295, + 9, + 1022 + ], + [ + 387, + 297, + 4, + 208 + ], + [ + 387, + 297, + 8, + 536 + ], + [ + 387, + 298, + 8, + 540 + ], + [ + 388, + 220, + 6, + 3 + ], + [ + 388, + 252, + 9, + 38 + ], + [ + 388, + 268, + 9, + 1704 + ], + [ + 388, + 290, + 9, + 1704 + ], + [ + 388, + 292, + 4, + 208 + ], + [ + 388, + 293, + 4, + 208 + ], + [ + 388, + 294, + 9, + 1704 + ], + [ + 388, + 295, + 4, + 125 + ], + [ + 388, + 296, + 4, + 208 + ], + [ + 388, + 296, + 9, + 223 + ], + [ + 388, + 298, + 4, + 208 + ], + [ + 388, + 299, + 4, + 208 + ], + [ + 388, + 299, + 8, + 3 + ], + [ + 388, + 300, + 4, + 208 + ], + [ + 388, + 301, + 4, + 208 + ], + [ + 388, + 302, + 4, + 208 + ], + [ + 389, + 210, + 6, + 144 + ], + [ + 389, + 211, + 9, + 1279 + ], + [ + 389, + 212, + 9, + 658 + ], + [ + 389, + 227, + 6, + 144 + ], + [ + 389, + 233, + 6, + 141 + ], + [ + 389, + 237, + 6, + 144 + ], + [ + 389, + 240, + 6, + 96 + ], + [ + 389, + 242, + 6, + 144 + ], + [ + 389, + 269, + 6, + 144 + ], + [ + 389, + 269, + 9, + 634 + ], + [ + 389, + 272, + 6, + 144 + ], + [ + 389, + 279, + 9, + 1704 + ], + [ + 389, + 303, + 4, + 205 + ], + [ + 389, + 303, + 8, + 325 + ], + [ + 389, + 304, + 4, + 208 + ], + [ + 389, + 305, + 4, + 208 + ], + [ + 389, + 305, + 8, + 776 + ], + [ + 389, + 306, + 4, + 70 + ], + [ + 390, + 214, + 6, + 144 + ], + [ + 390, + 218, + 6, + 144 + ], + [ + 390, + 221, + 6, + 144 + ], + [ + 390, + 223, + 6, + 144 + ], + [ + 390, + 225, + 6, + 85 + ], + [ + 390, + 229, + 6, + 80 + ], + [ + 390, + 231, + 6, + 144 + ], + [ + 390, + 231, + 9, + 780 + ], + [ + 390, + 234, + 6, + 144 + ], + [ + 390, + 236, + 6, + 144 + ], + [ + 390, + 248, + 6, + 99 + ], + [ + 390, + 250, + 6, + 144 + ], + [ + 390, + 250, + 9, + 1648 + ], + [ + 390, + 254, + 6, + 144 + ], + [ + 390, + 275, + 6, + 144 + ], + [ + 390, + 287, + 6, + 85 + ], + [ + 390, + 300, + 8, + 529 + ], + [ + 390, + 306, + 4, + 3 + ], + [ + 390, + 306, + 9, + 1159 + ], + [ + 390, + 308, + 8, + 724 + ], + [ + 390, + 309, + 8, + 536 + ], + [ + 391, + 230, + 6, + 14 + ], + [ + 391, + 232, + 6, + 11 + ], + [ + 391, + 243, + 6, + 144 + ], + [ + 391, + 247, + 9, + 1465 + ], + [ + 391, + 262, + 9, + 1704 + ], + [ + 391, + 266, + 9, + 190 + ], + [ + 391, + 288, + 5, + 16 + ], + [ + 391, + 289, + 5, + 5 + ], + [ + 391, + 290, + 5, + 16 + ], + [ + 391, + 291, + 5, + 16 + ], + [ + 391, + 291, + 6, + 144 + ], + [ + 391, + 292, + 5, + 16 + ], + [ + 391, + 293, + 5, + 16 + ], + [ + 391, + 294, + 5, + 16 + ], + [ + 391, + 295, + 5, + 16 + ], + [ + 391, + 296, + 5, + 16 + ], + [ + 391, + 297, + 5, + 16 + ], + [ + 391, + 298, + 5, + 16 + ], + [ + 391, + 299, + 5, + 16 + ], + [ + 391, + 300, + 5, + 16 + ], + [ + 391, + 301, + 5, + 16 + ], + [ + 391, + 301, + 9, + 1704 + ], + [ + 391, + 302, + 5, + 16 + ], + [ + 391, + 303, + 5, + 16 + ], + [ + 391, + 304, + 5, + 16 + ], + [ + 391, + 305, + 5, + 16 + ], + [ + 391, + 306, + 5, + 16 + ], + [ + 391, + 307, + 5, + 16 + ], + [ + 391, + 308, + 5, + 16 + ], + [ + 391, + 309, + 5, + 16 + ], + [ + 391, + 310, + 4, + 3 + ], + [ + 391, + 310, + 5, + 16 + ], + [ + 391, + 311, + 5, + 16 + ], + [ + 391, + 312, + 5, + 16 + ], + [ + 391, + 312, + 8, + 313 + ], + [ + 392, + 228, + 6, + 3 + ], + [ + 392, + 254, + 9, + 1616 + ], + [ + 392, + 269, + 9, + 349 + ], + [ + 392, + 280, + 9, + 1704 + ], + [ + 392, + 291, + 9, + 1704 + ], + [ + 392, + 306, + 4, + 135 + ], + [ + 392, + 307, + 4, + 208 + ], + [ + 392, + 308, + 4, + 201 + ], + [ + 392, + 309, + 4, + 208 + ], + [ + 392, + 310, + 4, + 205 + ], + [ + 392, + 311, + 4, + 208 + ], + [ + 392, + 312, + 4, + 208 + ], + [ + 392, + 314, + 4, + 208 + ], + [ + 392, + 315, + 4, + 208 + ], + [ + 392, + 315, + 8, + 3 + ], + [ + 393, + 238, + 6, + 144 + ], + [ + 393, + 239, + 6, + 144 + ], + [ + 393, + 240, + 6, + 48 + ], + [ + 393, + 241, + 6, + 144 + ], + [ + 393, + 246, + 6, + 144 + ], + [ + 393, + 247, + 6, + 144 + ], + [ + 393, + 252, + 6, + 144 + ], + [ + 393, + 255, + 6, + 144 + ], + [ + 393, + 257, + 9, + 1264 + ], + [ + 393, + 260, + 6, + 144 + ], + [ + 393, + 265, + 6, + 144 + ], + [ + 393, + 274, + 9, + 616 + ], + [ + 393, + 293, + 9, + 1704 + ], + [ + 393, + 301, + 6, + 144 + ], + [ + 393, + 310, + 6, + 144 + ], + [ + 393, + 313, + 6, + 16 + ], + [ + 393, + 314, + 6, + 144 + ], + [ + 393, + 315, + 8, + 240 + ], + [ + 393, + 316, + 8, + 776 + ], + [ + 393, + 318, + 8, + 776 + ], + [ + 394, + 245, + 6, + 129 + ], + [ + 394, + 270, + 6, + 123 + ], + [ + 394, + 282, + 6, + 144 + ], + [ + 394, + 284, + 9, + 1584 + ], + [ + 394, + 303, + 6, + 141 + ], + [ + 394, + 308, + 4, + 7 + ], + [ + 394, + 309, + 9, + 1704 + ], + [ + 394, + 310, + 9, + 1443 + ], + [ + 394, + 311, + 9, + 108 + ], + [ + 394, + 313, + 4, + 208 + ], + [ + 394, + 316, + 4, + 208 + ], + [ + 394, + 317, + 4, + 208 + ], + [ + 394, + 318, + 4, + 208 + ], + [ + 394, + 319, + 4, + 208 + ], + [ + 394, + 319, + 8, + 537 + ], + [ + 394, + 320, + 4, + 208 + ], + [ + 395, + 248, + 6, + 45 + ], + [ + 395, + 249, + 6, + 144 + ], + [ + 395, + 251, + 6, + 144 + ], + [ + 395, + 257, + 6, + 144 + ], + [ + 395, + 258, + 6, + 61 + ], + [ + 395, + 259, + 6, + 82 + ], + [ + 395, + 262, + 6, + 144 + ], + [ + 395, + 263, + 6, + 144 + ], + [ + 395, + 266, + 6, + 144 + ], + [ + 395, + 268, + 6, + 144 + ], + [ + 395, + 273, + 6, + 144 + ], + [ + 395, + 280, + 6, + 144 + ], + [ + 395, + 284, + 6, + 144 + ], + [ + 395, + 286, + 6, + 17 + ], + [ + 395, + 304, + 9, + 330 + ], + [ + 395, + 305, + 9, + 1704 + ], + [ + 395, + 309, + 6, + 144 + ], + [ + 395, + 317, + 8, + 3 + ], + [ + 395, + 319, + 8, + 239 + ], + [ + 395, + 319, + 9, + 1553 + ], + [ + 395, + 320, + 8, + 384 + ], + [ + 395, + 321, + 8, + 776 + ], + [ + 395, + 322, + 4, + 3 + ], + [ + 395, + 322, + 8, + 387 + ], + [ + 396, + 253, + 6, + 144 + ], + [ + 396, + 256, + 6, + 144 + ], + [ + 396, + 258, + 6, + 83 + ], + [ + 396, + 261, + 6, + 144 + ], + [ + 396, + 264, + 6, + 144 + ], + [ + 396, + 276, + 6, + 144 + ], + [ + 396, + 279, + 6, + 144 + ], + [ + 396, + 283, + 6, + 144 + ], + [ + 396, + 292, + 6, + 144 + ], + [ + 396, + 295, + 6, + 141 + ], + [ + 396, + 295, + 9, + 506 + ], + [ + 396, + 304, + 9, + 1374 + ], + [ + 396, + 306, + 6, + 144 + ], + [ + 396, + 307, + 9, + 1704 + ], + [ + 396, + 312, + 6, + 144 + ], + [ + 396, + 313, + 6, + 128 + ], + [ + 396, + 322, + 8, + 389 + ], + [ + 396, + 323, + 8, + 627 + ], + [ + 396, + 324, + 8, + 776 + ], + [ + 397, + 259, + 6, + 62 + ], + [ + 397, + 267, + 6, + 144 + ], + [ + 397, + 270, + 6, + 21 + ], + [ + 397, + 270, + 9, + 1167 + ], + [ + 397, + 271, + 6, + 144 + ], + [ + 397, + 274, + 6, + 144 + ], + [ + 397, + 285, + 6, + 144 + ], + [ + 397, + 286, + 9, + 1288 + ], + [ + 397, + 288, + 6, + 144 + ], + [ + 397, + 289, + 6, + 144 + ], + [ + 397, + 302, + 6, + 144 + ], + [ + 397, + 305, + 6, + 144 + ], + [ + 397, + 313, + 9, + 1254 + ], + [ + 397, + 315, + 6, + 144 + ], + [ + 397, + 319, + 6, + 144 + ], + [ + 397, + 323, + 8, + 118 + ], + [ + 397, + 325, + 6, + 144 + ], + [ + 397, + 325, + 8, + 773 + ], + [ + 397, + 326, + 4, + 125 + ], + [ + 397, + 326, + 8, + 776 + ], + [ + 398, + 266, + 9, + 1514 + ], + [ + 398, + 271, + 9, + 1255 + ], + [ + 398, + 281, + 9, + 672 + ], + [ + 398, + 295, + 6, + 3 + ], + [ + 398, + 313, + 5, + 16 + ], + [ + 398, + 314, + 5, + 16 + ], + [ + 398, + 315, + 5, + 16 + ], + [ + 398, + 315, + 9, + 165 + ], + [ + 398, + 316, + 5, + 16 + ], + [ + 398, + 317, + 5, + 16 + ], + [ + 398, + 317, + 9, + 1704 + ], + [ + 398, + 318, + 5, + 16 + ], + [ + 398, + 319, + 5, + 16 + ], + [ + 398, + 320, + 5, + 16 + ], + [ + 398, + 321, + 4, + 208 + ], + [ + 398, + 321, + 5, + 16 + ], + [ + 398, + 322, + 4, + 205 + ], + [ + 398, + 322, + 5, + 16 + ], + [ + 398, + 322, + 9, + 63 + ], + [ + 398, + 323, + 4, + 208 + ], + [ + 398, + 323, + 5, + 16 + ], + [ + 398, + 324, + 4, + 208 + ], + [ + 398, + 324, + 5, + 13 + ], + [ + 398, + 325, + 4, + 208 + ], + [ + 398, + 325, + 5, + 16 + ], + [ + 398, + 325, + 8, + 3 + ], + [ + 398, + 326, + 4, + 83 + ], + [ + 398, + 326, + 5, + 16 + ], + [ + 398, + 327, + 4, + 208 + ], + [ + 398, + 327, + 5, + 16 + ], + [ + 398, + 328, + 4, + 208 + ], + [ + 398, + 328, + 5, + 16 + ], + [ + 399, + 273, + 9, + 1704 + ], + [ + 399, + 277, + 6, + 144 + ], + [ + 399, + 286, + 6, + 127 + ], + [ + 399, + 293, + 6, + 144 + ], + [ + 399, + 294, + 6, + 144 + ], + [ + 399, + 300, + 6, + 144 + ], + [ + 399, + 303, + 4, + 3 + ], + [ + 399, + 304, + 6, + 144 + ], + [ + 399, + 307, + 6, + 144 + ], + [ + 399, + 308, + 6, + 144 + ], + [ + 399, + 314, + 9, + 328 + ], + [ + 399, + 318, + 6, + 144 + ], + [ + 399, + 320, + 9, + 1704 + ], + [ + 399, + 321, + 6, + 144 + ], + [ + 399, + 323, + 8, + 31 + ], + [ + 399, + 325, + 9, + 73 + ], + [ + 399, + 326, + 6, + 144 + ], + [ + 399, + 328, + 8, + 776 + ], + [ + 399, + 329, + 4, + 208 + ], + [ + 399, + 329, + 5, + 14 + ], + [ + 399, + 329, + 8, + 760 + ], + [ + 400, + 278, + 6, + 144 + ], + [ + 400, + 281, + 6, + 144 + ], + [ + 400, + 287, + 6, + 59 + ], + [ + 400, + 289, + 9, + 240 + ], + [ + 400, + 290, + 6, + 66 + ], + [ + 400, + 292, + 9, + 328 + ], + [ + 400, + 297, + 6, + 144 + ], + [ + 400, + 298, + 6, + 144 + ], + [ + 400, + 299, + 6, + 144 + ], + [ + 400, + 315, + 9, + 1539 + ], + [ + 400, + 317, + 6, + 144 + ], + [ + 400, + 321, + 9, + 1704 + ], + [ + 400, + 322, + 6, + 144 + ], + [ + 400, + 323, + 6, + 144 + ], + [ + 400, + 324, + 5, + 3 + ], + [ + 400, + 327, + 8, + 773 + ], + [ + 400, + 328, + 6, + 144 + ], + [ + 400, + 329, + 6, + 144 + ], + [ + 400, + 329, + 8, + 16 + ], + [ + 400, + 330, + 4, + 208 + ], + [ + 400, + 330, + 5, + 16 + ], + [ + 400, + 330, + 8, + 776 + ], + [ + 401, + 303, + 6, + 3 + ], + [ + 401, + 310, + 9, + 261 + ], + [ + 401, + 323, + 9, + 1704 + ], + [ + 401, + 324, + 9, + 1704 + ], + [ + 401, + 327, + 8, + 3 + ], + [ + 401, + 331, + 9, + 1704 + ], + [ + 402, + 290, + 6, + 78 + ], + [ + 402, + 296, + 6, + 144 + ], + [ + 402, + 303, + 9, + 240 + ], + [ + 402, + 311, + 6, + 144 + ], + [ + 402, + 316, + 6, + 144 + ], + [ + 402, + 316, + 9, + 1507 + ], + [ + 402, + 320, + 6, + 144 + ], + [ + 402, + 324, + 6, + 144 + ], + [ + 402, + 327, + 6, + 144 + ], + [ + 402, + 327, + 9, + 1648 + ], + [ + 402, + 329, + 5, + 2 + ], + [ + 402, + 330, + 6, + 144 + ], + [ + 402, + 331, + 4, + 208 + ], + [ + 402, + 331, + 6, + 144 + ], + [ + 402, + 331, + 8, + 598 + ], + [ + 402, + 332, + 4, + 208 + ], + [ + 402, + 332, + 6, + 144 + ], + [ + 402, + 332, + 8, + 776 + ], + [ + 402, + 332, + 9, + 607 + ], + [ + 403, + 348, + 4, + 208 + ], + [ + 403, + 350, + 9, + 509 + ], + [ + 403, + 355, + 4, + 83 + ], + [ + 403, + 356, + 4, + 26 + ], + [ + 403, + 358, + 4, + 208 + ], + [ + 403, + 359, + 9, + 1704 + ], + [ + 403, + 361, + 6, + 3 + ], + [ + 403, + 363, + 9, + 120 + ], + [ + 403, + 365, + 4, + 208 + ], + [ + 403, + 365, + 9, + 1336 + ], + [ + 403, + 366, + 4, + 208 + ], + [ + 403, + 369, + 9, + 1704 + ], + [ + 403, + 371, + 4, + 179 + ], + [ + 403, + 372, + 4, + 208 + ], + [ + 403, + 373, + 4, + 45 + ], + [ + 403, + 376, + 4, + 208 + ], + [ + 403, + 377, + 4, + 208 + ], + [ + 403, + 377, + 8, + 3 + ], + [ + 404, + 353, + 9, + 57 + ], + [ + 404, + 361, + 4, + 208 + ], + [ + 404, + 363, + 4, + 208 + ], + [ + 404, + 363, + 9, + 1584 + ], + [ + 404, + 365, + 9, + 368 + ], + [ + 404, + 368, + 4, + 208 + ], + [ + 404, + 369, + 4, + 208 + ], + [ + 404, + 371, + 4, + 29 + ], + [ + 404, + 375, + 4, + 208 + ], + [ + 404, + 375, + 9, + 1048 + ], + [ + 404, + 377, + 9, + 1424 + ], + [ + 404, + 379, + 4, + 208 + ], + [ + 404, + 381, + 4, + 99 + ], + [ + 404, + 381, + 9, + 895 + ], + [ + 404, + 382, + 4, + 208 + ], + [ + 404, + 383, + 4, + 208 + ], + [ + 405, + 360, + 6, + 3 + ], + [ + 405, + 368, + 9, + 1704 + ], + [ + 405, + 375, + 9, + 560 + ], + [ + 405, + 376, + 9, + 1525 + ], + [ + 405, + 378, + 4, + 208 + ], + [ + 405, + 380, + 4, + 208 + ], + [ + 405, + 381, + 4, + 109 + ], + [ + 405, + 382, + 5, + 16 + ], + [ + 405, + 384, + 4, + 208 + ], + [ + 405, + 385, + 4, + 208 + ], + [ + 405, + 386, + 4, + 208 + ], + [ + 405, + 386, + 9, + 1584 + ], + [ + 405, + 387, + 4, + 208 + ], + [ + 405, + 388, + 4, + 208 + ], + [ + 405, + 389, + 4, + 208 + ], + [ + 405, + 389, + 8, + 3 + ], + [ + 406, + 366, + 6, + 144 + ], + [ + 406, + 367, + 6, + 144 + ], + [ + 406, + 368, + 6, + 144 + ], + [ + 406, + 369, + 6, + 144 + ], + [ + 406, + 370, + 6, + 144 + ], + [ + 406, + 371, + 6, + 144 + ], + [ + 406, + 372, + 6, + 144 + ], + [ + 406, + 372, + 9, + 743 + ], + [ + 406, + 375, + 9, + 96 + ], + [ + 406, + 376, + 6, + 144 + ], + [ + 406, + 377, + 6, + 144 + ], + [ + 406, + 378, + 6, + 144 + ], + [ + 406, + 379, + 9, + 1704 + ], + [ + 406, + 381, + 6, + 144 + ], + [ + 406, + 382, + 6, + 128 + ], + [ + 406, + 387, + 9, + 328 + ], + [ + 406, + 389, + 9, + 713 + ], + [ + 406, + 391, + 8, + 480 + ], + [ + 406, + 393, + 6, + 80 + ], + [ + 406, + 393, + 8, + 536 + ], + [ + 406, + 394, + 8, + 776 + ], + [ + 407, + 373, + 6, + 144 + ], + [ + 407, + 374, + 6, + 104 + ], + [ + 407, + 375, + 6, + 144 + ], + [ + 407, + 377, + 9, + 280 + ], + [ + 407, + 379, + 5, + 16 + ], + [ + 407, + 379, + 6, + 144 + ], + [ + 407, + 380, + 5, + 16 + ], + [ + 407, + 380, + 9, + 1704 + ], + [ + 407, + 381, + 5, + 16 + ], + [ + 407, + 382, + 9, + 1704 + ], + [ + 407, + 383, + 5, + 16 + ], + [ + 407, + 384, + 5, + 16 + ], + [ + 407, + 385, + 5, + 16 + ], + [ + 407, + 386, + 5, + 16 + ], + [ + 407, + 387, + 5, + 16 + ], + [ + 407, + 388, + 5, + 16 + ], + [ + 407, + 389, + 5, + 16 + ], + [ + 407, + 390, + 5, + 16 + ], + [ + 407, + 391, + 5, + 16 + ], + [ + 407, + 392, + 5, + 16 + ], + [ + 407, + 393, + 4, + 120 + ], + [ + 407, + 393, + 5, + 16 + ], + [ + 407, + 394, + 4, + 208 + ], + [ + 407, + 394, + 5, + 16 + ], + [ + 407, + 395, + 4, + 208 + ], + [ + 407, + 395, + 5, + 16 + ], + [ + 407, + 396, + 4, + 208 + ], + [ + 407, + 396, + 5, + 16 + ], + [ + 407, + 397, + 4, + 208 + ], + [ + 407, + 397, + 5, + 16 + ], + [ + 407, + 397, + 8, + 536 + ], + [ + 407, + 397, + 9, + 1032 + ], + [ + 407, + 398, + 5, + 16 + ], + [ + 407, + 398, + 9, + 120 + ], + [ + 408, + 380, + 6, + 144 + ], + [ + 408, + 382, + 6, + 16 + ], + [ + 408, + 383, + 6, + 144 + ], + [ + 408, + 383, + 9, + 1648 + ], + [ + 408, + 384, + 6, + 144 + ], + [ + 408, + 385, + 6, + 144 + ], + [ + 408, + 387, + 6, + 144 + ], + [ + 408, + 389, + 6, + 144 + ], + [ + 408, + 389, + 9, + 712 + ], + [ + 408, + 390, + 4, + 208 + ], + [ + 408, + 390, + 6, + 144 + ], + [ + 408, + 391, + 6, + 144 + ], + [ + 408, + 392, + 4, + 64 + ], + [ + 408, + 392, + 9, + 1704 + ], + [ + 408, + 399, + 4, + 208 + ], + [ + 408, + 400, + 8, + 536 + ], + [ + 408, + 401, + 6, + 144 + ], + [ + 408, + 401, + 8, + 776 + ], + [ + 409, + 386, + 6, + 144 + ], + [ + 409, + 388, + 6, + 144 + ], + [ + 409, + 392, + 6, + 144 + ], + [ + 409, + 393, + 6, + 64 + ], + [ + 409, + 393, + 9, + 1704 + ], + [ + 409, + 394, + 6, + 144 + ], + [ + 409, + 395, + 6, + 144 + ], + [ + 409, + 396, + 6, + 144 + ], + [ + 409, + 397, + 6, + 144 + ], + [ + 409, + 398, + 6, + 144 + ], + [ + 409, + 399, + 6, + 144 + ], + [ + 409, + 399, + 9, + 120 + ], + [ + 409, + 400, + 6, + 144 + ], + [ + 409, + 400, + 8, + 240 + ], + [ + 409, + 401, + 9, + 1616 + ], + [ + 409, + 402, + 6, + 144 + ], + [ + 409, + 402, + 8, + 776 + ], + [ + 409, + 402, + 9, + 144 + ], + [ + 409, + 403, + 6, + 144 + ], + [ + 409, + 403, + 8, + 776 + ], + [ + 410, + 391, + 4, + 208 + ], + [ + 410, + 392, + 4, + 144 + ], + [ + 410, + 393, + 4, + 88 + ], + [ + 410, + 395, + 9, + 1616 + ], + [ + 410, + 396, + 9, + 1704 + ], + [ + 410, + 398, + 4, + 208 + ], + [ + 410, + 398, + 9, + 1584 + ], + [ + 410, + 399, + 5, + 16 + ], + [ + 410, + 399, + 9, + 464 + ], + [ + 410, + 400, + 4, + 208 + ], + [ + 410, + 400, + 5, + 16 + ], + [ + 410, + 401, + 4, + 208 + ], + [ + 410, + 401, + 5, + 16 + ], + [ + 410, + 402, + 4, + 208 + ], + [ + 410, + 402, + 5, + 16 + ], + [ + 410, + 403, + 4, + 208 + ], + [ + 410, + 403, + 5, + 16 + ], + [ + 410, + 404, + 4, + 208 + ], + [ + 410, + 404, + 5, + 16 + ], + [ + 410, + 404, + 6, + 8 + ], + [ + 410, + 404, + 8, + 8 + ], + [ + 411, + 442, + 4, + 208 + ], + [ + 411, + 448, + 4, + 208 + ], + [ + 411, + 452, + 9, + 217 + ], + [ + 411, + 459, + 4, + 208 + ], + [ + 411, + 474, + 4, + 208 + ], + [ + 411, + 477, + 4, + 208 + ], + [ + 411, + 483, + 9, + 1455 + ], + [ + 411, + 484, + 9, + 1344 + ], + [ + 411, + 487, + 9, + 328 + ], + [ + 411, + 488, + 9, + 328 + ], + [ + 411, + 489, + 9, + 1704 + ], + [ + 411, + 490, + 4, + 208 + ], + [ + 411, + 491, + 4, + 128 + ], + [ + 411, + 492, + 4, + 208 + ], + [ + 411, + 493, + 4, + 208 + ], + [ + 412, + 447, + 4, + 208 + ], + [ + 412, + 449, + 4, + 208 + ], + [ + 412, + 452, + 4, + 208 + ], + [ + 412, + 471, + 9, + 1117 + ], + [ + 412, + 472, + 4, + 38 + ], + [ + 412, + 473, + 9, + 1359 + ], + [ + 412, + 477, + 9, + 947 + ], + [ + 412, + 479, + 4, + 208 + ], + [ + 412, + 483, + 4, + 208 + ], + [ + 412, + 483, + 9, + 249 + ], + [ + 412, + 484, + 4, + 35 + ], + [ + 412, + 486, + 4, + 208 + ], + [ + 412, + 489, + 4, + 183 + ], + [ + 412, + 491, + 4, + 80 + ], + [ + 412, + 492, + 9, + 1704 + ], + [ + 412, + 494, + 4, + 208 + ], + [ + 413, + 444, + 4, + 208 + ], + [ + 413, + 457, + 9, + 1704 + ], + [ + 413, + 459, + 9, + 1704 + ], + [ + 413, + 465, + 9, + 261 + ], + [ + 413, + 476, + 4, + 208 + ], + [ + 413, + 482, + 9, + 1704 + ], + [ + 413, + 483, + 5, + 16 + ], + [ + 413, + 484, + 4, + 173 + ], + [ + 413, + 484, + 5, + 16 + ], + [ + 413, + 485, + 5, + 16 + ], + [ + 413, + 486, + 5, + 16 + ], + [ + 413, + 487, + 5, + 16 + ], + [ + 413, + 488, + 5, + 16 + ], + [ + 413, + 489, + 5, + 16 + ], + [ + 413, + 490, + 5, + 16 + ], + [ + 413, + 491, + 5, + 16 + ], + [ + 413, + 492, + 5, + 16 + ], + [ + 413, + 493, + 5, + 16 + ], + [ + 413, + 494, + 5, + 16 + ], + [ + 413, + 495, + 4, + 208 + ], + [ + 413, + 495, + 5, + 16 + ], + [ + 413, + 496, + 4, + 208 + ], + [ + 413, + 496, + 5, + 16 + ], + [ + 413, + 497, + 5, + 16 + ], + [ + 413, + 498, + 5, + 16 + ], + [ + 413, + 498, + 8, + 3 + ], + [ + 413, + 499, + 4, + 208 + ], + [ + 413, + 499, + 5, + 16 + ], + [ + 413, + 499, + 6, + 3 + ], + [ + 413, + 500, + 5, + 16 + ], + [ + 413, + 501, + 4, + 208 + ], + [ + 413, + 501, + 5, + 16 + ], + [ + 413, + 502, + 5, + 16 + ], + [ + 413, + 503, + 5, + 16 + ], + [ + 413, + 504, + 5, + 16 + ], + [ + 413, + 505, + 5, + 16 + ], + [ + 414, + 452, + 6, + 144 + ], + [ + 414, + 457, + 6, + 144 + ], + [ + 414, + 461, + 6, + 144 + ], + [ + 414, + 462, + 6, + 144 + ], + [ + 414, + 464, + 6, + 32 + ], + [ + 414, + 465, + 6, + 144 + ], + [ + 414, + 477, + 7, + 416 + ], + [ + 414, + 483, + 7, + 416 + ], + [ + 414, + 488, + 7, + 416 + ], + [ + 414, + 488, + 9, + 1376 + ], + [ + 414, + 490, + 9, + 1616 + ], + [ + 414, + 497, + 9, + 611 + ], + [ + 414, + 498, + 7, + 378 + ], + [ + 414, + 500, + 4, + 3 + ], + [ + 414, + 502, + 8, + 358 + ], + [ + 414, + 505, + 7, + 416 + ], + [ + 414, + 505, + 8, + 394 + ], + [ + 414, + 506, + 5, + 16 + ], + [ + 415, + 458, + 6, + 51 + ], + [ + 415, + 467, + 6, + 144 + ], + [ + 415, + 472, + 9, + 1077 + ], + [ + 415, + 476, + 6, + 144 + ], + [ + 415, + 496, + 9, + 1704 + ], + [ + 415, + 498, + 9, + 669 + ], + [ + 415, + 500, + 4, + 205 + ], + [ + 415, + 500, + 9, + 1587 + ], + [ + 415, + 508, + 4, + 208 + ], + [ + 415, + 509, + 4, + 208 + ], + [ + 415, + 510, + 4, + 208 + ], + [ + 415, + 513, + 4, + 208 + ], + [ + 415, + 514, + 8, + 198 + ], + [ + 415, + 515, + 8, + 141 + ], + [ + 415, + 516, + 4, + 208 + ], + [ + 415, + 517, + 4, + 208 + ], + [ + 416, + 475, + 9, + 748 + ], + [ + 416, + 480, + 4, + 157 + ], + [ + 416, + 486, + 6, + 3 + ], + [ + 416, + 486, + 9, + 1704 + ], + [ + 416, + 497, + 4, + 208 + ], + [ + 416, + 505, + 4, + 208 + ], + [ + 416, + 506, + 9, + 1704 + ], + [ + 416, + 508, + 5, + 16 + ], + [ + 416, + 509, + 5, + 16 + ], + [ + 416, + 510, + 5, + 16 + ], + [ + 416, + 511, + 4, + 208 + ], + [ + 416, + 511, + 5, + 16 + ], + [ + 416, + 512, + 4, + 208 + ], + [ + 416, + 512, + 5, + 16 + ], + [ + 416, + 513, + 5, + 16 + ], + [ + 416, + 513, + 9, + 1217 + ], + [ + 416, + 514, + 4, + 208 + ], + [ + 416, + 514, + 5, + 16 + ], + [ + 416, + 515, + 4, + 208 + ], + [ + 416, + 515, + 5, + 16 + ], + [ + 416, + 516, + 5, + 16 + ], + [ + 416, + 516, + 8, + 3 + ], + [ + 416, + 517, + 5, + 16 + ], + [ + 416, + 518, + 4, + 208 + ], + [ + 416, + 518, + 5, + 16 + ], + [ + 417, + 470, + 6, + 144 + ], + [ + 417, + 471, + 9, + 587 + ], + [ + 417, + 472, + 6, + 144 + ], + [ + 417, + 474, + 6, + 144 + ], + [ + 417, + 475, + 6, + 144 + ], + [ + 417, + 477, + 6, + 144 + ], + [ + 417, + 478, + 6, + 144 + ], + [ + 417, + 478, + 9, + 1648 + ], + [ + 417, + 479, + 6, + 109 + ], + [ + 417, + 480, + 6, + 144 + ], + [ + 417, + 483, + 6, + 32 + ], + [ + 417, + 489, + 6, + 144 + ], + [ + 417, + 497, + 6, + 144 + ], + [ + 417, + 510, + 9, + 1704 + ], + [ + 417, + 521, + 4, + 208 + ], + [ + 417, + 523, + 4, + 144 + ], + [ + 417, + 524, + 5, + 3 + ], + [ + 417, + 525, + 8, + 661 + ], + [ + 417, + 527, + 8, + 776 + ], + [ + 418, + 471, + 6, + 144 + ], + [ + 418, + 473, + 6, + 144 + ], + [ + 418, + 481, + 6, + 144 + ], + [ + 418, + 482, + 6, + 141 + ], + [ + 418, + 483, + 6, + 112 + ], + [ + 418, + 484, + 6, + 144 + ], + [ + 418, + 485, + 6, + 144 + ], + [ + 418, + 487, + 6, + 144 + ], + [ + 418, + 490, + 6, + 86 + ], + [ + 418, + 493, + 6, + 144 + ], + [ + 418, + 495, + 6, + 144 + ], + [ + 418, + 500, + 6, + 144 + ], + [ + 418, + 500, + 9, + 117 + ], + [ + 418, + 501, + 9, + 1704 + ], + [ + 418, + 519, + 5, + 16 + ], + [ + 418, + 520, + 5, + 16 + ], + [ + 418, + 521, + 5, + 16 + ], + [ + 418, + 522, + 5, + 16 + ], + [ + 418, + 522, + 9, + 216 + ], + [ + 418, + 523, + 5, + 16 + ], + [ + 418, + 523, + 8, + 448 + ], + [ + 418, + 524, + 5, + 13 + ], + [ + 418, + 524, + 9, + 1704 + ], + [ + 418, + 525, + 5, + 16 + ], + [ + 418, + 525, + 8, + 115 + ], + [ + 418, + 526, + 5, + 16 + ], + [ + 418, + 526, + 8, + 536 + ], + [ + 418, + 527, + 5, + 16 + ], + [ + 418, + 528, + 5, + 16 + ], + [ + 418, + 528, + 8, + 536 + ], + [ + 419, + 486, + 6, + 141 + ], + [ + 419, + 488, + 6, + 144 + ], + [ + 419, + 490, + 6, + 58 + ], + [ + 419, + 491, + 6, + 144 + ], + [ + 419, + 492, + 6, + 144 + ], + [ + 419, + 494, + 6, + 144 + ], + [ + 419, + 496, + 6, + 144 + ], + [ + 419, + 497, + 9, + 1093 + ], + [ + 419, + 498, + 6, + 144 + ], + [ + 419, + 523, + 6, + 9 + ], + [ + 419, + 527, + 9, + 1387 + ], + [ + 419, + 528, + 9, + 120 + ], + [ + 419, + 529, + 4, + 96 + ], + [ + 419, + 530, + 4, + 208 + ], + [ + 419, + 533, + 4, + 208 + ], + [ + 419, + 533, + 8, + 296 + ], + [ + 419, + 534, + 4, + 208 + ], + [ + 419, + 534, + 8, + 776 + ], + [ + 419, + 535, + 9, + 1704 + ], + [ + 420, + 485, + 9, + 257 + ], + [ + 420, + 507, + 4, + 6 + ], + [ + 420, + 508, + 9, + 1704 + ], + [ + 420, + 516, + 9, + 1704 + ], + [ + 420, + 520, + 4, + 208 + ], + [ + 420, + 522, + 4, + 208 + ], + [ + 420, + 522, + 9, + 127 + ], + [ + 420, + 524, + 4, + 208 + ], + [ + 420, + 527, + 4, + 208 + ], + [ + 420, + 528, + 4, + 208 + ], + [ + 420, + 528, + 9, + 1584 + ], + [ + 420, + 529, + 4, + 112 + ], + [ + 420, + 531, + 4, + 208 + ], + [ + 420, + 532, + 4, + 7 + ], + [ + 420, + 535, + 4, + 208 + ], + [ + 420, + 536, + 4, + 208 + ], + [ + 420, + 536, + 5, + 3 + ], + [ + 421, + 499, + 9, + 1704 + ], + [ + 421, + 519, + 4, + 58 + ], + [ + 421, + 521, + 9, + 1704 + ], + [ + 421, + 523, + 4, + 64 + ], + [ + 421, + 525, + 4, + 208 + ], + [ + 421, + 526, + 4, + 205 + ], + [ + 421, + 527, + 9, + 317 + ], + [ + 421, + 529, + 5, + 16 + ], + [ + 421, + 530, + 5, + 16 + ], + [ + 421, + 531, + 5, + 16 + ], + [ + 421, + 531, + 9, + 1616 + ], + [ + 421, + 532, + 4, + 12 + ], + [ + 421, + 532, + 5, + 16 + ], + [ + 421, + 533, + 5, + 16 + ], + [ + 421, + 534, + 5, + 16 + ], + [ + 421, + 535, + 5, + 16 + ], + [ + 421, + 536, + 5, + 13 + ], + [ + 421, + 537, + 4, + 208 + ], + [ + 421, + 537, + 5, + 16 + ], + [ + 421, + 538, + 4, + 208 + ], + [ + 421, + 538, + 5, + 16 + ], + [ + 421, + 539, + 4, + 208 + ], + [ + 421, + 539, + 5, + 16 + ], + [ + 421, + 539, + 9, + 35 + ], + [ + 421, + 540, + 4, + 208 + ], + [ + 421, + 540, + 5, + 16 + ], + [ + 421, + 541, + 4, + 208 + ], + [ + 421, + 541, + 5, + 16 + ], + [ + 422, + 499, + 6, + 141 + ], + [ + 422, + 501, + 6, + 144 + ], + [ + 422, + 502, + 6, + 144 + ], + [ + 422, + 503, + 6, + 144 + ], + [ + 422, + 504, + 6, + 144 + ], + [ + 422, + 505, + 6, + 144 + ], + [ + 422, + 506, + 6, + 144 + ], + [ + 422, + 507, + 6, + 144 + ], + [ + 422, + 508, + 6, + 144 + ], + [ + 422, + 509, + 6, + 144 + ], + [ + 422, + 512, + 9, + 1704 + ], + [ + 422, + 519, + 4, + 150 + ], + [ + 422, + 536, + 9, + 1704 + ], + [ + 422, + 537, + 9, + 531 + ], + [ + 422, + 540, + 8, + 539 + ], + [ + 422, + 541, + 8, + 122 + ], + [ + 422, + 542, + 4, + 205 + ], + [ + 422, + 542, + 8, + 776 + ], + [ + 423, + 510, + 6, + 144 + ], + [ + 423, + 511, + 6, + 144 + ], + [ + 423, + 514, + 6, + 144 + ], + [ + 423, + 516, + 6, + 144 + ], + [ + 423, + 517, + 6, + 144 + ], + [ + 423, + 518, + 6, + 144 + ], + [ + 423, + 523, + 9, + 1279 + ], + [ + 423, + 524, + 6, + 144 + ], + [ + 423, + 525, + 6, + 144 + ], + [ + 423, + 528, + 6, + 144 + ], + [ + 423, + 532, + 9, + 147 + ], + [ + 423, + 533, + 6, + 144 + ], + [ + 423, + 537, + 6, + 144 + ], + [ + 423, + 539, + 9, + 1289 + ], + [ + 423, + 540, + 8, + 237 + ], + [ + 423, + 542, + 4, + 3 + ], + [ + 423, + 543, + 6, + 61 + ], + [ + 423, + 544, + 8, + 776 + ], + [ + 423, + 545, + 6, + 144 + ], + [ + 423, + 545, + 8, + 776 + ], + [ + 423, + 545, + 9, + 872 + ], + [ + 424, + 512, + 6, + 144 + ], + [ + 424, + 513, + 6, + 144 + ], + [ + 424, + 515, + 6, + 144 + ], + [ + 424, + 517, + 7, + 3 + ], + [ + 424, + 519, + 6, + 144 + ], + [ + 424, + 520, + 9, + 1616 + ], + [ + 424, + 532, + 4, + 189 + ], + [ + 424, + 533, + 9, + 1362 + ], + [ + 424, + 539, + 6, + 112 + ], + [ + 424, + 541, + 9, + 1704 + ], + [ + 424, + 542, + 5, + 16 + ], + [ + 424, + 543, + 4, + 208 + ], + [ + 424, + 543, + 5, + 16 + ], + [ + 424, + 544, + 4, + 208 + ], + [ + 424, + 544, + 5, + 16 + ], + [ + 424, + 545, + 4, + 208 + ], + [ + 424, + 545, + 5, + 16 + ], + [ + 424, + 546, + 4, + 208 + ], + [ + 424, + 546, + 5, + 16 + ], + [ + 424, + 546, + 8, + 694 + ], + [ + 425, + 520, + 6, + 144 + ], + [ + 425, + 521, + 6, + 144 + ], + [ + 425, + 522, + 9, + 1273 + ], + [ + 425, + 523, + 6, + 135 + ], + [ + 425, + 526, + 6, + 144 + ], + [ + 425, + 530, + 6, + 144 + ], + [ + 425, + 531, + 6, + 6 + ], + [ + 425, + 532, + 6, + 144 + ], + [ + 425, + 532, + 9, + 1557 + ], + [ + 425, + 534, + 6, + 144 + ], + [ + 425, + 536, + 6, + 144 + ], + [ + 425, + 538, + 6, + 144 + ], + [ + 425, + 539, + 8, + 78 + ], + [ + 425, + 541, + 8, + 654 + ], + [ + 425, + 543, + 8, + 767 + ], + [ + 425, + 546, + 6, + 144 + ], + [ + 425, + 546, + 8, + 82 + ], + [ + 425, + 547, + 4, + 208 + ], + [ + 425, + 547, + 5, + 3 + ], + [ + 425, + 547, + 6, + 144 + ], + [ + 425, + 547, + 9, + 965 + ], + [ + 426, + 522, + 6, + 144 + ], + [ + 426, + 522, + 7, + 3 + ], + [ + 426, + 525, + 9, + 1528 + ], + [ + 426, + 526, + 4, + 3 + ], + [ + 426, + 527, + 6, + 144 + ], + [ + 426, + 529, + 6, + 144 + ], + [ + 426, + 531, + 6, + 138 + ], + [ + 426, + 535, + 6, + 144 + ], + [ + 426, + 539, + 6, + 32 + ], + [ + 426, + 540, + 6, + 144 + ], + [ + 426, + 540, + 9, + 1466 + ], + [ + 426, + 541, + 6, + 144 + ], + [ + 426, + 542, + 6, + 144 + ], + [ + 426, + 543, + 6, + 83 + ], + [ + 426, + 543, + 8, + 9 + ], + [ + 426, + 544, + 6, + 144 + ], + [ + 426, + 546, + 9, + 173 + ], + [ + 426, + 547, + 5, + 13 + ], + [ + 426, + 547, + 8, + 776 + ], + [ + 426, + 548, + 4, + 208 + ], + [ + 426, + 548, + 5, + 16 + ], + [ + 426, + 548, + 6, + 144 + ], + [ + 426, + 548, + 8, + 770 + ], + [ + 426, + 548, + 9, + 654 + ], + [ + 428, + 6, + 9, + 1480 + ], + [ + 428, + 10, + 9, + 649 + ], + [ + 428, + 18, + 9, + 1704 + ], + [ + 428, + 65, + 9, + 1704 + ], + [ + 428, + 71, + 9, + 1704 + ], + [ + 428, + 74, + 9, + 1704 + ], + [ + 437, + 125, + 9, + 15 + ], + [ + 438, + 120, + 9, + 15 + ], + [ + 442, + 125, + 9, + 15 + ], + [ + 446, + 193, + 9, + 15 + ], + [ + 447, + 99, + 9, + 15 + ], + [ + 448, + 76, + 9, + 1704 + ], + [ + 448, + 115, + 9, + 1704 + ], + [ + 448, + 129, + 9, + 1704 + ], + [ + 448, + 172, + 9, + 1704 + ], + [ + 448, + 184, + 9, + 425 + ], + [ + 448, + 202, + 9, + 1704 + ], + [ + 451, + 104, + 9, + 499 + ], + [ + 451, + 142, + 9, + 1704 + ], + [ + 451, + 186, + 9, + 1704 + ], + [ + 451, + 194, + 9, + 1264 + ], + [ + 451, + 222, + 9, + 1704 + ], + [ + 453, + 101, + 9, + 1704 + ], + [ + 453, + 106, + 9, + 1704 + ], + [ + 453, + 192, + 9, + 1704 + ], + [ + 453, + 215, + 9, + 1704 + ], + [ + 453, + 224, + 9, + 346 + ], + [ + 453, + 230, + 9, + 1704 + ], + [ + 453, + 252, + 9, + 79 + ], + [ + 454, + 228, + 9, + 15 + ], + [ + 456, + 257, + 9, + 15 + ], + [ + 457, + 175, + 9, + 15 + ], + [ + 462, + 116, + 9, + 1704 + ], + [ + 462, + 140, + 9, + 1704 + ], + [ + 462, + 150, + 9, + 1704 + ], + [ + 462, + 177, + 9, + 1704 + ], + [ + 462, + 257, + 9, + 425 + ], + [ + 462, + 275, + 9, + 1704 + ], + [ + 463, + 224, + 9, + 15 + ], + [ + 469, + 330, + 9, + 1288 + ], + [ + 469, + 339, + 9, + 1704 + ], + [ + 469, + 355, + 9, + 1704 + ], + [ + 469, + 367, + 9, + 1704 + ], + [ + 469, + 371, + 9, + 1704 + ], + [ + 469, + 372, + 9, + 841 + ], + [ + 472, + 390, + 9, + 1704 + ], + [ + 472, + 403, + 9, + 904 + ], + [ + 472, + 422, + 9, + 864 + ], + [ + 472, + 425, + 9, + 361 + ], + [ + 472, + 429, + 9, + 1704 + ], + [ + 472, + 442, + 9, + 1704 + ], + [ + 472, + 445, + 9, + 1704 + ], + [ + 479, + 449, + 9, + 1704 + ], + [ + 479, + 453, + 9, + 1704 + ], + [ + 479, + 463, + 9, + 1704 + ], + [ + 479, + 467, + 9, + 1704 + ], + [ + 479, + 468, + 9, + 1440 + ], + [ + 479, + 479, + 9, + 689 + ], + [ + 488, + 92, + 9, + 1704 + ], + [ + 488, + 118, + 9, + 1704 + ], + [ + 488, + 132, + 9, + 1704 + ], + [ + 488, + 139, + 9, + 425 + ], + [ + 488, + 158, + 9, + 1704 + ], + [ + 488, + 168, + 9, + 1704 + ], + [ + 489, + 159, + 9, + 15 + ], + [ + 494, + 134, + 9, + 15 + ], + [ + 496, + 213, + 9, + 15 + ], + [ + 497, + 78, + 9, + 1528 + ], + [ + 497, + 81, + 9, + 1704 + ], + [ + 497, + 110, + 9, + 601 + ], + [ + 497, + 124, + 9, + 1704 + ], + [ + 497, + 164, + 9, + 1704 + ], + [ + 497, + 191, + 9, + 1704 + ], + [ + 498, + 237, + 9, + 15 + ], + [ + 499, + 126, + 9, + 15 + ], + [ + 500, + 193, + 9, + 15 + ], + [ + 502, + 233, + 9, + 15 + ], + [ + 505, + 133, + 9, + 15 + ], + [ + 506, + 197, + 9, + 1408 + ], + [ + 506, + 227, + 9, + 1704 + ], + [ + 506, + 248, + 9, + 1704 + ], + [ + 506, + 269, + 9, + 721 + ], + [ + 506, + 282, + 9, + 1704 + ], + [ + 506, + 285, + 9, + 1704 + ], + [ + 509, + 170, + 9, + 1704 + ], + [ + 509, + 207, + 9, + 1704 + ], + [ + 509, + 211, + 9, + 425 + ], + [ + 509, + 218, + 9, + 1704 + ], + [ + 509, + 258, + 9, + 1704 + ], + [ + 509, + 260, + 9, + 1704 + ], + [ + 515, + 296, + 9, + 15 + ], + [ + 517, + 250, + 9, + 56 + ], + [ + 517, + 251, + 9, + 847 + ], + [ + 517, + 277, + 9, + 1704 + ], + [ + 517, + 278, + 9, + 1704 + ], + [ + 517, + 297, + 9, + 1352 + ], + [ + 517, + 300, + 9, + 1704 + ], + [ + 517, + 302, + 9, + 1288 + ], + [ + 517, + 313, + 9, + 290 + ], + [ + 527, + 362, + 9, + 1704 + ], + [ + 527, + 373, + 9, + 1704 + ], + [ + 527, + 378, + 9, + 1320 + ], + [ + 527, + 381, + 9, + 809 + ], + [ + 527, + 384, + 9, + 1704 + ], + [ + 527, + 385, + 9, + 1704 + ], + [ + 535, + 423, + 9, + 1704 + ], + [ + 535, + 428, + 9, + 1704 + ], + [ + 535, + 460, + 9, + 1704 + ], + [ + 535, + 472, + 9, + 627 + ], + [ + 535, + 495, + 9, + 1704 + ], + [ + 535, + 502, + 9, + 1502 + ], + [ + 542, + 464, + 9, + 1704 + ], + [ + 542, + 494, + 9, + 1704 + ], + [ + 542, + 513, + 9, + 425 + ], + [ + 542, + 514, + 9, + 1704 + ], + [ + 542, + 518, + 9, + 1704 + ], + [ + 542, + 530, + 9, + 1704 + ], + [ + 543, + 474, + 9, + 1704 + ], + [ + 543, + 475, + 9, + 956 + ], + [ + 543, + 476, + 9, + 1704 + ], + [ + 543, + 505, + 9, + 1704 + ], + [ + 543, + 537, + 9, + 1173 + ], + [ + 543, + 538, + 9, + 1704 + ], + [ + 545, + 493, + 9, + 1704 + ], + [ + 545, + 507, + 9, + 1704 + ], + [ + 545, + 509, + 9, + 1704 + ], + [ + 545, + 519, + 9, + 1704 + ], + [ + 545, + 523, + 9, + 425 + ], + [ + 545, + 544, + 9, + 1704 + ] + ], + "profile": { + "1": 10826280, + "2": 3188592, + "3": 1015650, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + }, + "provenance": { + "original_candidate_sha256": "e94c97c6a75c58b19ba569573f6eda5c461ee630e66b035567e0817713ff0601", + "scope": "Frozen integer witness; discovery optimizer is not a reproduction dependency. Scientific fields are unchanged from the independently audited witness." + } +} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/DEPENDENCIES.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/DEPENDENCIES.json new file mode 100644 index 0000000000..080dc588ba --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/DEPENDENCIES.json @@ -0,0 +1,32 @@ +{ + "main_files": { + "research/coupled-carrier-cap740/cap_check.py": "c2a2ea7df9ef2f7c7ae2739435f4ac44f2c912d8e18fc9278c717958f258ee38", + "research/coupled-carrier-cap740/common.py": "8786495cbf808d950be1c42e42d0198e950e44167af80063d25fd186aafea534", + "research/coupled-carrier-cap740/vendor/PR3133-CAP.json": "e32f3ecd5e6594935583f80f643cf1930e8bc017e3c541025c335395a15cf19c", + "research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz": "68b8bae90144248774b1920cd27f9519caa3dc427704d8a9da6d4c491d912fc4", + "research/coupled-carrier-cap740/vendor/PR3133-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd", + "research/coupled-carrier-cap740/vendor/lift.py": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c", + "research/rank7-joint-endframes/allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "research/rank7-joint-endframes/allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461" + }, + "optional_independent_audit_python": [ + "numpy" + ], + "finite_and_expansion_python": "standard library only", + "native_canonical_inputs": { + "base": { + "native_source_word_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "canonical_sha256": "b87f174cd72d194f23c075fd82b2fe42f5e9606e8500e4dfa23c31e8655c8de5" + }, + "extra": { + "native_source_word_sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "canonical_sha256": "8276f3d7f6f85bf3d678832f63baabb38550d11ed8f3841aa47020121e8e4e82" + } + }, + "full_release": "Separate unchanged source/native/compiler/precision/outer pipeline, not proved by owner checks." +} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/DISPATCH37.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/DISPATCH37.json new file mode 100644 index 0000000000..c4c016ea3f --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/DISPATCH37.json @@ -0,0 +1 @@ +[[0,0,"extra"],[0,1,"extra"],[0,2,"extra"],[0,3,"extra"],[0,4,"extra"],[1,0,"extra"],[0,5,"extra"],[1,1,"extra"],[0,6,"extra"],[1,2,"extra"],[0,7,"extra"],[1,3,"extra"],[0,8,"extra"],[1,4,"extra"],[0,9,"extra"],[2,0,"extra"],[1,5,"extra"],[0,10,"extra"],[2,1,"extra"],[1,6,"extra"],[0,11,"extra"],[2,2,"extra"],[1,7,"extra"],[0,12,"extra"],[2,3,"extra"],[1,8,"extra"],[0,13,"extra"],[2,4,"extra"],[1,9,"extra"],[3,0,"extra"],[0,14,"extra"],[2,5,"extra"],[1,10,"extra"],[3,1,"extra"],[0,15,"extra"],[2,6,"extra"],[1,11,"extra"],[3,2,"extra"],[0,16,"extra"],[2,7,"extra"],[1,12,"extra"],[3,3,"extra"],[0,17,"extra"],[2,8,"extra"],[1,13,"extra"],[3,4,"extra"],[0,18,"extra"],[2,9,"extra"],[4,0,"extra"],[1,14,"extra"],[3,5,"extra"],[0,19,"extra"],[2,10,"extra"],[4,1,"extra"],[1,15,"extra"],[3,6,"extra"],[0,20,"extra"],[2,11,"extra"],[4,2,"extra"],[1,16,"extra"],[3,7,"extra"],[0,21,"extra"],[2,12,"extra"],[4,3,"extra"],[1,17,"extra"],[3,8,"extra"],[0,22,"extra"],[2,13,"extra"],[4,4,"extra"],[1,18,"extra"],[3,9,"extra"],[0,23,"extra"],[5,0,"extra"],[2,14,"extra"],[4,5,"extra"],[1,19,"extra"],[3,10,"extra"],[0,24,"extra"],[5,1,"extra"],[2,15,"extra"],[4,6,"extra"],[1,20,"extra"],[3,11,"extra"],[0,25,"extra"],[5,2,"extra"],[2,16,"extra"],[4,7,"extra"],[1,21,"extra"],[3,12,"extra"],[0,26,"extra"],[5,3,"extra"],[2,17,"extra"],[4,8,"extra"],[1,22,"extra"],[3,13,"extra"],[0,27,"extra"],[5,4,"extra"],[2,18,"extra"],[4,9,"extra"],[1,23,"extra"],[6,0,"extra"],[3,14,"extra"],[0,28,"extra"],[5,5,"extra"],[2,19,"extra"],[4,10,"extra"],[1,24,"extra"],[6,1,"extra"],[3,15,"extra"],[0,29,"extra"],[5,6,"extra"],[2,20,"extra"],[4,11,"extra"],[1,25,"extra"],[6,2,"extra"],[3,16,"extra"],[0,30,"extra"],[5,7,"extra"],[2,21,"extra"],[4,12,"extra"],[1,26,"extra"],[6,3,"extra"],[3,17,"extra"],[0,31,"extra"],[5,8,"extra"],[2,22,"extra"],[4,13,"extra"],[1,27,"extra"],[6,4,"extra"],[3,18,"extra"],[0,32,"extra"],[5,9,"extra"],[2,23,"extra"],[7,0,"extra"],[4,14,"extra"],[1,28,"extra"],[6,5,"extra"],[3,19,"extra"],[0,33,"extra"],[5,10,"extra"],[2,24,"extra"],[7,1,"extra"],[4,15,"extra"],[1,29,"extra"],[6,6,"extra"],[3,20,"extra"],[0,34,"extra"],[5,11,"extra"],[2,25,"extra"],[7,2,"extra"],[4,16,"extra"],[1,30,"extra"],[6,7,"extra"],[3,21,"extra"],[0,35,"extra"],[5,12,"extra"],[2,26,"extra"],[7,3,"extra"],[4,17,"extra"],[1,31,"extra"],[6,8,"extra"],[3,22,"extra"],[0,36,"extra"],[5,13,"extra"],[2,27,"extra"],[7,4,"extra"],[4,18,"extra"],[1,32,"extra"],[6,9,"extra"],[3,23,"extra"],[8,0,"extra"],[5,14,"extra"],[2,28,"extra"],[7,5,"extra"],[4,19,"extra"],[1,33,"extra"],[6,10,"extra"],[3,24,"extra"],[8,1,"extra"],[5,15,"extra"],[2,29,"extra"],[7,6,"extra"],[4,20,"extra"],[1,34,"extra"],[6,11,"extra"],[3,25,"extra"],[8,2,"extra"],[5,16,"extra"],[2,30,"extra"],[7,7,"extra"],[4,21,"extra"],[1,35,"extra"],[6,12,"extra"],[3,26,"extra"],[8,3,"extra"],[5,17,"extra"],[2,31,"extra"],[7,8,"extra"],[4,22,"extra"],[1,36,"extra"],[6,13,"extra"],[3,27,"extra"],[8,4,"extra"],[5,18,"extra"],[2,32,"extra"],[7,9,"extra"],[4,23,"extra"],[6,14,"extra"],[3,28,"gauge44"],[8,5,"gauge44"],[5,19,"gauge44"],[2,33,"gauge44"],[7,10,"gauge44"],[4,24,"gauge44"],[6,15,"gauge44"],[3,29,"gauge44"],[8,6,"gauge44"],[5,20,"gauge44"],[2,34,"gauge44"],[7,11,"gauge44"],[4,25,"gauge44"],[6,16,"gauge44"],[3,30,"gauge44"],[8,7,"gauge44"],[5,21,"gauge44"],[2,35,"gauge44"],[7,12,"gauge44"],[4,26,"gauge44"],[6,17,"gauge44"],[3,31,"gauge44"],[8,8,"gauge44"],[5,22,"gauge44"],[2,36,"gauge44"],[7,13,"gauge44"],[4,27,"gauge44"],[6,18,"gauge44"],[3,32,"gauge44"],[8,9,"gauge44"],[5,23,"gauge44"],[7,14,"gauge44"],[4,28,"gauge44"],[6,19,"gauge44"],[3,33,"gauge44"],[8,10,"gauge44"],[5,24,"gauge44"],[7,15,"gauge44"],[4,29,"gauge44"],[6,20,"gauge44"],[3,34,"gauge44"],[8,11,"gauge44"],[5,25,"gauge44"],[7,16,"gauge44"],[4,30,"gauge44"],[6,21,"gauge44"],[3,35,"gauge44"],[8,12,"gauge44"],[5,26,"gauge44"],[7,17,"gauge44"],[4,31,"gauge44"],[6,22,"gauge44"],[3,36,"gauge44"],[8,13,"gauge44"],[5,27,"gauge44"],[7,18,"gauge44"],[4,32,"gauge44"],[6,23,"gauge44"],[8,14,"gauge44"],[5,28,"gauge44"],[7,19,"gauge44"],[4,33,"gauge44"],[6,24,"gauge44"],[8,15,"gauge44"],[5,29,"gauge44"],[7,20,"gauge44"],[4,34,"gauge44"],[6,25,"gauge44"],[8,16,"gauge44"],[5,30,"gauge44"],[7,21,"gauge44"],[4,35,"gauge44"],[6,26,"gauge44"],[8,17,"gauge44"],[5,31,"gauge44"],[7,22,"gauge44"],[4,36,"gauge44"],[6,27,"gauge44"],[8,18,"gauge44"],[5,32,"gauge44"],[7,23,"gauge44"],[6,28,"gauge44"],[8,19,"gauge44"],[5,33,"gauge44"],[7,24,"gauge44"],[6,29,"gauge44"],[8,20,"gauge44"],[5,34,"gauge44"],[7,25,"gauge44"],[6,30,"gauge44"],[8,21,"gauge44"],[5,35,"gauge44"],[7,26,"gauge44"],[6,31,"gauge44"],[8,22,"gauge44"],[5,36,"gauge44"],[7,27,"gauge44"],[6,32,"gauge44"],[8,23,"gauge44"],[7,28,"gauge44"],[6,33,"gauge44"],[8,24,"gauge44"],[7,29,"gauge44"],[6,34,"gauge44"],[8,25,"gauge44"],[7,30,"gauge44"],[6,35,"gauge44"],[8,26,"gauge44"],[7,31,"gauge44"],[6,36,"gauge44"],[8,27,"gauge44"],[7,32,"gauge44"],[8,28,"gauge44"],[7,33,"gauge44"],[8,29,"gauge44"],[7,34,"gauge44"],[8,30,"gauge44"],[7,35,"gauge44"],[8,31,"gauge44"],[7,36,"gauge44"],[8,32,"gauge44"],[8,33,"gauge44"],[8,34,"gauge44"],[8,35,"gauge44"],[8,36,"gauge44"]] diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/EXPECTED.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/EXPECTED.json new file mode 100644 index 0000000000..415eac1a2b --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/EXPECTED.json @@ -0,0 +1,24 @@ +{ + "rows": 1791936, + "replicas": 488, + "calls": 4392, + "physical": 437757, + "payload_sha256": "20662cc64df34cab409fdf31ed0f0222462530922a01308a46964d661d2374cf", + "profile": { + "1": 10826280, + "2": 3188592, + "3": 1015650, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + }, + "literal_files": { + "FILL.json.gz": "a93f1baa8d1a2eda216fff54708ef6a32586428cbb9ccf5f75fb053e290b7050", + "PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "DISPATCH.json": "15f187340cd32037492d4ce57820a41873dc015f4c689a8596d59c55f0077892", + "ORDER.json": "a4c8f6c96716da0a6d2057373bf3ec3ffb1c7f86bf2b263416dc1c00fee23555", + "PROFILE.json": "1e37bb17fa4ca6fd84d62c6f540e09be96724ea3af4ea50e3e27c6ecb796b35c" + }, + "scope": "Fresh T488 generation and independent actual-native owner audit; no full admission." +} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/INPUT-PINS.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/INPUT-PINS.json new file mode 100644 index 0000000000..86e98f5585 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/INPUT-PINS.json @@ -0,0 +1,16 @@ +{ + "CANDIDATE.json": "fbdda845beac5bba9baa4b1b8c8f596e98f70b59e1d60ebf4f4d3e8758631bfd", + "PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "ORDER37.json": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "DISPATCH37.json": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "T16-ORDER.json": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "T16-DISPATCH.json": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "SOURCE-PINS.json": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "EXPECTED.json": "924493b6bbeade055af4916ac7bd6d7d7ec0600719f5c39636dc3f16d7ec14ea", + "source_context.py": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "verify_candidate.py": "0765a1a4ecf42f4a2341c3c3b2e2a371daeebc37c2700364e6ab1fd97b0b12a8", + "integral_network.py": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "T8-ORDER.json": "a1abf78fb3b88bbf4656e6ae26f148a007f744f0be4c00d480fb2424ce8766d6", + "T8-DISPATCH.json": "23877abbe8ec258eb1f2425137f9171d37b1a4414a25595abe75eb0738850a24", + "T8-PROVENANCE.json": "65d971ac40b9638fb16a35f9d8889009f038d8a46d46085bcc5aea03ee31fd97" +} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/ORDER37.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/ORDER37.json new file mode 100644 index 0000000000..411004ab28 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/ORDER37.json @@ -0,0 +1 @@ +[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [0, 5], [1, 1], [0, 6], [1, 2], [0, 7], [1, 3], [0, 8], [1, 4], [0, 9], [2, 0], [1, 5], [0, 10], [2, 1], [1, 6], [0, 11], [2, 2], [1, 7], [0, 12], [2, 3], [1, 8], [0, 13], [2, 4], [1, 9], [3, 0], [0, 14], [2, 5], [1, 10], [3, 1], [0, 15], [2, 6], [1, 11], [3, 2], [0, 16], [2, 7], [1, 12], [3, 3], [0, 17], [2, 8], [1, 13], [3, 4], [0, 18], [2, 9], [4, 0], [1, 14], [3, 5], [0, 19], [2, 10], [4, 1], [1, 15], [3, 6], [0, 20], [2, 11], [4, 2], [1, 16], [3, 7], [0, 21], [2, 12], [4, 3], [1, 17], [3, 8], [0, 22], [2, 13], [4, 4], [1, 18], [3, 9], [0, 23], [5, 0], [2, 14], [4, 5], [1, 19], [3, 10], [0, 24], [5, 1], [2, 15], [4, 6], [1, 20], [3, 11], [0, 25], [5, 2], [2, 16], [4, 7], [1, 21], [3, 12], [0, 26], [5, 3], [2, 17], [4, 8], [1, 22], [3, 13], [0, 27], [5, 4], [2, 18], [4, 9], [1, 23], [6, 0], [3, 14], [0, 28], [5, 5], [2, 19], [4, 10], [1, 24], [6, 1], [3, 15], [0, 29], [5, 6], [2, 20], [4, 11], [1, 25], [6, 2], [3, 16], [0, 30], [5, 7], [2, 21], [4, 12], [1, 26], [6, 3], [3, 17], [0, 31], [5, 8], [2, 22], [4, 13], [1, 27], [6, 4], [3, 18], [0, 32], [5, 9], [2, 23], [7, 0], [4, 14], [1, 28], [6, 5], [3, 19], [0, 33], [5, 10], [2, 24], [7, 1], [4, 15], [1, 29], [6, 6], [3, 20], [0, 34], [5, 11], [2, 25], [7, 2], [4, 16], [1, 30], [6, 7], [3, 21], [0, 35], [5, 12], [2, 26], [7, 3], [4, 17], [1, 31], [6, 8], [3, 22], [0, 36], [5, 13], [2, 27], [7, 4], [4, 18], [1, 32], [6, 9], [3, 23], [8, 0], [5, 14], [2, 28], [7, 5], [4, 19], [1, 33], [6, 10], [3, 24], [8, 1], [5, 15], [2, 29], [7, 6], [4, 20], [1, 34], [6, 11], [3, 25], [8, 2], [5, 16], [2, 30], [7, 7], [4, 21], [1, 35], [6, 12], [3, 26], [8, 3], [5, 17], [2, 31], [7, 8], [4, 22], [1, 36], [6, 13], [3, 27], [8, 4], [5, 18], [2, 32], [7, 9], [4, 23], [6, 14], [3, 28], [8, 5], [5, 19], [2, 33], [7, 10], [4, 24], [6, 15], [3, 29], [8, 6], [5, 20], [2, 34], [7, 11], [4, 25], [6, 16], [3, 30], [8, 7], [5, 21], [2, 35], [7, 12], [4, 26], [6, 17], [3, 31], [8, 8], [5, 22], [2, 36], [7, 13], [4, 27], [6, 18], [3, 32], [8, 9], [5, 23], [7, 14], [4, 28], [6, 19], [3, 33], [8, 10], [5, 24], [7, 15], [4, 29], [6, 20], [3, 34], [8, 11], [5, 25], [7, 16], [4, 30], [6, 21], [3, 35], [8, 12], [5, 26], [7, 17], [4, 31], [6, 22], [3, 36], [8, 13], [5, 27], [7, 18], [4, 32], [6, 23], [8, 14], [5, 28], [7, 19], [4, 33], [6, 24], [8, 15], [5, 29], [7, 20], [4, 34], [6, 25], [8, 16], [5, 30], [7, 21], [4, 35], [6, 26], [8, 17], [5, 31], [7, 22], [4, 36], [6, 27], [8, 18], [5, 32], [7, 23], [6, 28], [8, 19], [5, 33], [7, 24], [6, 29], [8, 20], [5, 34], [7, 25], [6, 30], [8, 21], [5, 35], [7, 26], [6, 31], [8, 22], [5, 36], [7, 27], [6, 32], [8, 23], [7, 28], [6, 33], [8, 24], [7, 29], [6, 34], [8, 25], [7, 30], [6, 35], [8, 26], [7, 31], [6, 36], [8, 27], [7, 32], [8, 28], [7, 33], [8, 29], [7, 34], [8, 30], [7, 35], [8, 31], [7, 36], [8, 32], [8, 33], [8, 34], [8, 35], [8, 36]] diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/PROVIDERS.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/PROVIDERS.json new file mode 100644 index 0000000000..f321d41853 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/PROVIDERS.json @@ -0,0 +1 @@ +{"extra":{"widths":[9,9,8,9,8,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,7,9,9,9,9,9,9,9,9,9,4,9,9,9,9,4,9,9,9,9,9,9,9,9,9,9,4,9,9,9,9,4,7,9,9,9,9,8,9,9,4,9,4,9,8,9,9,4,9,9,9,9,9,8,9,9,4,9,4,9,8,9,9,4,7,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,9,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,8,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,9,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,8,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,6,6,6,6,6,6,6,6,9,8,8,9,8,9,8,9,9,9,9,9,9,9,9,9,8,8,7,7,7,7,8,9,8,9,6,6,7,7,7,7,9,9,9,9,8,8,8,8,8,8,9,9,9,9,8,6,6,8,8,8,8,9,9,9,9,8,8,8,7,7,7,7,7,7,7,7,8,7,6,6,7,7,7,7,7,7,7,7,8,7,8,8,9,9,9,9,8,8,8,8,7,7,6,6,9,8,9,8,8,8,8,8,7,7,9,8,9,8,7,7,7,7,8,8,8,8,7,7,7,7,7,7,6,7,6,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,7,8,8,8,8,5,5,8,8,8,8],"actual_paid_profile":{"1":2439,"2":726,"3":224,"4":102,"5":20,"8":8}},"gauge44":{"widths":[9,9,8,9,8,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,7,9,9,9,9,9,9,9,9,9,4,9,9,9,9,4,9,9,9,9,9,9,9,9,9,9,4,9,9,9,9,4,7,9,9,9,9,8,9,9,4,9,4,9,8,9,9,4,9,9,9,9,9,8,9,9,4,9,4,9,8,9,9,4,7,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,9,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,8,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,9,9,9,9,9,9,4,9,4,9,4,9,9,9,9,4,8,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,6,6,6,6,6,6,6,6,9,8,8,9,8,9,8,9,9,9,9,9,9,9,9,9,8,8,7,7,7,7,8,9,8,9,6,6,7,7,7,7,9,9,9,9,8,8,8,8,8,8,9,9,9,9,8,6,6,8,8,8,8,9,9,9,9,8,8,8,7,7,7,7,7,7,7,7,8,7,6,6,7,7,7,7,7,7,7,7,8,7,8,8,9,9,9,9,8,8,8,8,7,7,6,6,9,8,9,8,8,8,8,8,7,7,9,8,9,8,7,7,7,7,8,8,8,8,7,7,7,7,7,7,6,7,6,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,7,8,8,8,8,5,5,8,8,8,8],"actual_paid_profile":{"1":2439,"2":726,"3":224,"4":102,"5":20,"8":8}}} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/README.txt b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/README.txt new file mode 100644 index 0000000000..c976f20f98 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/README.txt @@ -0,0 +1,6 @@ +T488 combines the retained T37, T8, and T16 source chronologies, in that order, with eight copies and the authenticated staged provider. +Finite verification: OWNER_SOURCE_REPO=REPO python3 -I -B verify_owner.py --price-dir PARENT_PACKAGE +Optional deterministic literal reconstruction: OWNER_SOURCE_REPO=REPO python3 -I -B portable_expand.py --out FRESH_DIR +Independent literal audit requires OWNER_SOURCE_REPO, OWNER_LITERAL_DIR, OWNER_NATIVE_DIR (checked-base and checked-extra canonical tables), and OWNER_AUDIT_OUTPUT. +The finite verifier calls the parent exact price checker on the reconstructed profile. Neither finite verification nor stored owner evidence is full admission. No optimization is used. +T8 and T16 original Git provenance is retained in their PROVENANCE files; T37 source construction is authenticated by SOURCE-PINS and the source context. diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/SOURCE-PINS.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/SOURCE-PINS.json new file mode 100644 index 0000000000..5aa0ee4cb4 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/SOURCE-PINS.json @@ -0,0 +1,27 @@ +{ + "repo_files": { + "research/coupled-carrier-cap740/cap_check.py": "c2a2ea7df9ef2f7c7ae2739435f4ac44f2c912d8e18fc9278c717958f258ee38", + "research/coupled-carrier-cap740/common.py": "8786495cbf808d950be1c42e42d0198e950e44167af80063d25fd186aafea534", + "research/coupled-carrier-cap740/vendor/PR3133-CAP.json": "e32f3ecd5e6594935583f80f643cf1930e8bc017e3c541025c335395a15cf19c", + "research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz": "68b8bae90144248774b1920cd27f9519caa3dc427704d8a9da6d4c491d912fc4", + "research/coupled-carrier-cap740/vendor/PR3133-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd", + "research/coupled-carrier-cap740/vendor/lift.py": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c", + "research/rank7-joint-endframes/allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "research/rank7-joint-endframes/allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461" + }, + "native_canonical": { + "base": { + "native_source_word_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "canonical_sha256": "b87f174cd72d194f23c075fd82b2fe42f5e9606e8500e4dfa23c31e8655c8de5" + }, + "extra": { + "native_source_word_sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "canonical_sha256": "8276f3d7f6f85bf3d678832f63baabb38550d11ed8f3841aa47020121e8e4e82" + } + } +} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T16-DISPATCH.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T16-DISPATCH.json new file mode 100644 index 0000000000..40725d2abb --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T16-DISPATCH.json @@ -0,0 +1 @@ +[[0,0,"extra"],[0,8,"gauge44"],[0,1,"gauge44"],[0,9,"gauge44"],[1,0,"gauge44"],[1,8,"gauge44"],[0,2,"gauge44"],[0,10,"gauge44"],[1,1,"gauge44"],[1,9,"gauge44"],[2,0,"gauge44"],[2,8,"gauge44"],[0,3,"gauge44"],[0,11,"gauge44"],[1,2,"gauge44"],[1,10,"gauge44"],[2,1,"gauge44"],[2,9,"gauge44"],[3,0,"gauge44"],[3,8,"gauge44"],[0,4,"gauge44"],[0,12,"gauge44"],[1,3,"gauge44"],[1,11,"gauge44"],[2,2,"gauge44"],[2,10,"gauge44"],[3,1,"gauge44"],[3,9,"gauge44"],[4,0,"gauge44"],[4,8,"gauge44"],[0,5,"gauge44"],[0,13,"gauge44"],[1,4,"gauge44"],[1,12,"gauge44"],[2,3,"gauge44"],[2,11,"gauge44"],[3,2,"gauge44"],[3,10,"gauge44"],[4,1,"gauge44"],[4,9,"gauge44"],[5,0,"gauge44"],[5,8,"gauge44"],[0,6,"gauge44"],[0,14,"gauge44"],[1,5,"gauge44"],[1,13,"gauge44"],[2,4,"gauge44"],[2,12,"gauge44"],[3,3,"gauge44"],[3,11,"gauge44"],[4,2,"gauge44"],[4,10,"gauge44"],[5,1,"gauge44"],[5,9,"gauge44"],[0,7,"gauge44"],[0,15,"gauge44"],[6,0,"gauge44"],[6,8,"gauge44"],[1,6,"gauge44"],[1,14,"gauge44"],[2,5,"gauge44"],[2,13,"gauge44"],[3,4,"gauge44"],[3,12,"gauge44"],[4,3,"gauge44"],[4,11,"gauge44"],[5,2,"gauge44"],[5,10,"gauge44"],[6,1,"gauge44"],[6,9,"gauge44"],[1,7,"gauge44"],[1,15,"gauge44"],[7,0,"gauge44"],[7,8,"gauge44"],[2,6,"gauge44"],[2,14,"gauge44"],[3,5,"gauge44"],[3,13,"gauge44"],[4,4,"gauge44"],[4,12,"gauge44"],[5,3,"gauge44"],[5,11,"gauge44"],[6,2,"gauge44"],[6,10,"gauge44"],[7,1,"gauge44"],[7,9,"gauge44"],[2,7,"gauge44"],[2,15,"gauge44"],[8,0,"gauge44"],[8,8,"gauge44"],[3,6,"gauge44"],[3,14,"gauge44"],[4,5,"gauge44"],[4,13,"gauge44"],[5,4,"gauge44"],[5,12,"gauge44"],[6,3,"gauge44"],[6,11,"gauge44"],[7,2,"gauge44"],[7,10,"gauge44"],[8,1,"gauge44"],[8,9,"gauge44"],[3,7,"gauge44"],[3,15,"gauge44"],[4,6,"gauge44"],[4,14,"gauge44"],[5,5,"gauge44"],[5,13,"gauge44"],[6,4,"gauge44"],[6,12,"gauge44"],[7,3,"gauge44"],[7,11,"gauge44"],[8,2,"gauge44"],[8,10,"gauge44"],[4,7,"gauge44"],[4,15,"gauge44"],[5,6,"gauge44"],[5,14,"gauge44"],[6,5,"gauge44"],[6,13,"gauge44"],[7,4,"gauge44"],[7,12,"gauge44"],[8,3,"gauge44"],[8,11,"gauge44"],[5,7,"gauge44"],[5,15,"gauge44"],[6,6,"gauge44"],[6,14,"gauge44"],[7,5,"gauge44"],[7,13,"gauge44"],[8,4,"gauge44"],[8,12,"gauge44"],[6,7,"gauge44"],[6,15,"gauge44"],[7,6,"gauge44"],[7,14,"gauge44"],[8,5,"gauge44"],[8,13,"gauge44"],[7,7,"gauge44"],[7,15,"gauge44"],[8,6,"gauge44"],[8,14,"gauge44"],[8,7,"gauge44"],[8,15,"gauge44"]] \ No newline at end of file diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T16-ORDER.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T16-ORDER.json new file mode 100644 index 0000000000..470b8afb8a --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T16-ORDER.json @@ -0,0 +1 @@ +[[0,0],[0,8],[0,1],[0,9],[1,0],[1,8],[0,2],[0,10],[1,1],[1,9],[2,0],[2,8],[0,3],[0,11],[1,2],[1,10],[2,1],[2,9],[3,0],[3,8],[0,4],[0,12],[1,3],[1,11],[2,2],[2,10],[3,1],[3,9],[4,0],[4,8],[0,5],[0,13],[1,4],[1,12],[2,3],[2,11],[3,2],[3,10],[4,1],[4,9],[5,0],[5,8],[0,6],[0,14],[1,5],[1,13],[2,4],[2,12],[3,3],[3,11],[4,2],[4,10],[5,1],[5,9],[0,7],[0,15],[6,0],[6,8],[1,6],[1,14],[2,5],[2,13],[3,4],[3,12],[4,3],[4,11],[5,2],[5,10],[6,1],[6,9],[1,7],[1,15],[7,0],[7,8],[2,6],[2,14],[3,5],[3,13],[4,4],[4,12],[5,3],[5,11],[6,2],[6,10],[7,1],[7,9],[2,7],[2,15],[8,0],[8,8],[3,6],[3,14],[4,5],[4,13],[5,4],[5,12],[6,3],[6,11],[7,2],[7,10],[8,1],[8,9],[3,7],[3,15],[4,6],[4,14],[5,5],[5,13],[6,4],[6,12],[7,3],[7,11],[8,2],[8,10],[4,7],[4,15],[5,6],[5,14],[6,5],[6,13],[7,4],[7,12],[8,3],[8,11],[5,7],[5,15],[6,6],[6,14],[7,5],[7,13],[8,4],[8,12],[6,7],[6,15],[7,6],[7,14],[8,5],[8,13],[7,7],[7,15],[8,6],[8,14],[8,7],[8,15]] \ No newline at end of file diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-DISPATCH.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-DISPATCH.json new file mode 100644 index 0000000000..f95b6f07bf --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-DISPATCH.json @@ -0,0 +1 @@ +[[0,0,"extra"],[0,1,"gauge44"],[1,0,"gauge44"],[0,2,"gauge44"],[1,1,"gauge44"],[2,0,"gauge44"],[0,3,"gauge44"],[3,0,"gauge44"],[1,2,"gauge44"],[2,1,"gauge44"],[0,4,"gauge44"],[2,2,"gauge44"],[1,3,"gauge44"],[3,1,"gauge44"],[4,0,"gauge44"],[0,5,"gauge44"],[1,4,"gauge44"],[2,3,"gauge44"],[3,2,"gauge44"],[4,1,"gauge44"],[5,0,"gauge44"],[0,6,"gauge44"],[1,5,"gauge44"],[2,4,"gauge44"],[3,3,"gauge44"],[4,2,"gauge44"],[5,1,"gauge44"],[0,7,"gauge44"],[6,0,"gauge44"],[1,6,"gauge44"],[2,5,"gauge44"],[3,4,"gauge44"],[4,3,"gauge44"],[5,2,"gauge44"],[6,1,"gauge44"],[1,7,"gauge44"],[7,0,"gauge44"],[2,6,"gauge44"],[3,5,"gauge44"],[4,4,"gauge44"],[5,3,"gauge44"],[6,2,"gauge44"],[7,1,"gauge44"],[2,7,"gauge44"],[8,0,"gauge44"],[3,6,"gauge44"],[4,5,"gauge44"],[5,4,"gauge44"],[6,3,"gauge44"],[7,2,"gauge44"],[8,1,"gauge44"],[3,7,"gauge44"],[4,6,"gauge44"],[5,5,"gauge44"],[6,4,"gauge44"],[7,3,"gauge44"],[8,2,"gauge44"],[4,7,"gauge44"],[5,6,"gauge44"],[6,5,"gauge44"],[7,4,"gauge44"],[8,3,"gauge44"],[5,7,"gauge44"],[6,6,"gauge44"],[7,5,"gauge44"],[8,4,"gauge44"],[6,7,"gauge44"],[7,6,"gauge44"],[8,5,"gauge44"],[7,7,"gauge44"],[8,6,"gauge44"],[8,7,"gauge44"]] \ No newline at end of file diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-ORDER.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-ORDER.json new file mode 100644 index 0000000000..b013bdb989 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-ORDER.json @@ -0,0 +1 @@ +[[0,0],[0,1],[1,0],[0,2],[1,1],[2,0],[0,3],[3,0],[1,2],[2,1],[0,4],[2,2],[1,3],[3,1],[4,0],[0,5],[1,4],[2,3],[3,2],[4,1],[5,0],[0,6],[1,5],[2,4],[3,3],[4,2],[5,1],[0,7],[6,0],[1,6],[2,5],[3,4],[4,3],[5,2],[6,1],[1,7],[7,0],[2,6],[3,5],[4,4],[5,3],[6,2],[7,1],[2,7],[8,0],[3,6],[4,5],[5,4],[6,3],[7,2],[8,1],[3,7],[4,6],[5,5],[6,4],[7,3],[8,2],[4,7],[5,6],[6,5],[7,4],[8,3],[5,7],[6,6],[7,5],[8,4],[6,7],[7,6],[8,5],[7,7],[8,6],[8,7]] \ No newline at end of file diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-PROVENANCE.json b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-PROVENANCE.json new file mode 100644 index 0000000000..bf49e23740 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/T8-PROVENANCE.json @@ -0,0 +1,29 @@ +{ + "status": "EXACT_RETAINED_GIT_SEMANTIC_DERIVATION", + "sources": [ + { + "git_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "path": "research/t8-rank7-two-swaps/PLAN-T8.json", + "git_blob": "887b6dca0bc8b8b0efc5c087ed610bfcbe8052d4", + "sha256": "6cfd3262a7b39667b7428b2772c35ed0dc1443d476173f2d55c96829717b1453" + }, + { + "git_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "path": "research/t8-rank7-two-swaps/DISPATCH-RULE.json", + "git_blob": "3037b557c7d0fc5f9c4354f7612e13846bd3a51b", + "sha256": "c38b8b8ce676a39e202018310dc6b57b48d69456437e9297453e09efafa0da4e" + }, + { + "git_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "path": "research/t8-rank7-two-swaps/reconstruct.py", + "git_blob": "aa85cf9130b97a5558ca8040fc4ff0872e3a304c", + "sha256": "90257d8ccac561967de66ec1829584e61f8d1a1b3c62594af82bde4bace1a1cb" + } + ], + "ORDER": "T8-ORDER.json equals PLAN-T8.json order exactly; serialized derived output, not falsely claimed separate Gitblob.", + "DISPATCH": "T8-DISPATCH.json follows retainedDISPATCH-RULE exactly: extraonly(0,0).", + "derived_files": { + "T8-ORDER.json": "a1abf78fb3b88bbf4656e6ae26f148a007f744f0be4c00d480fb2424ce8766d6", + "T8-DISPATCH.json": "23877abbe8ec258eb1f2425137f9171d37b1a4414a25595abe75eb0738850a24" + } +} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/UPSTREAM-PROOF.md b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/UPSTREAM-PROOF.md new file mode 100644 index 0000000000..2a64b0bc3e --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/UPSTREAM-PROOF.md @@ -0,0 +1,159 @@ +# Integral copied owners from grouped source windows + +This is a finite owner construction for the changed STAGED644-660 words. It +assumes the source-bound provider interface: 408 indivisible helpers, ordered +widths obtained from the literal native entry/end frames, and local paid profile +`{1:2439,2:726,3:224,4:102,5:20,8:8}`. In each provider the old helper indices +389 and 397 have width seven instead of eight. Every other width is unchanged. +The inventory is `{4:26,5:2,6:18,7:52,8:97,9:213}`. This document does not prove +the changed word or its numerical precision contract. + +The fixed source is dcharb78's PR3133 head +`51eb9c4ee9e4722010d308aa3309e039d3940cc2`, and the prior cap-attaining fill is +Jeremy Diviney's PR3148 head `f2927a4b8afcf0701a6b945e14f30de1d94f5176`. +The source-window/checker lineage includes Tekalign's independent owner checker, +Marius-Paul Dumitrean's joint endpoint words, Yiyang Lu's pattern/flow realization, +and Nick Petalas's copied-owner constructions. The old cap remains a conditional +fixed-inventory result. Its numerical cap does not apply to these changed words. + +## Grouped integer witness + +Take the first of the two exactly interleaved T37 copies in the source T74 +ORDER. Compute its windows directly from the retained source execution template. +They have the form `lo < t <= hi`, with `lo=-1` for an initially available source. +A group g collects the n_g physical bins with one common capacity and the same +integer interval. Every bin in a group has a distinct physical family while that +interval is open. Windows belonging to successive children of the same physical +family have disjoint open/closed integer intervals. `portable_expand.py` checks the latter +property from the literal plan, rather than assuming distinct child labels mean +distinct physical stock. + +Fix S copies. An aggregate witness consists of nonnegative integers X_(g,p), +the number of bins of each capacity-feasible width pattern p, and Z_(g,t,w), the +number of width-w roles from macro-call t placed in group g. Its exact equations +and inequalities are: + +* Sum_p X_(g,p) = S n_g. +* Sum_t Z_(g,t,w) = Sum_p p_w X_(g,p). +* Sum_g Z_(g,t,w) = S I_w, for every macro-call t and width w. +* Z is zero outside `lo_g < t <= hi_g`. +* Sum_w Z_(g,t,w) <= S n_g. + +Every pattern's total width is at most its bin capacity. Its number of nonzero +helper slots is at most S. Our actual S is twenty; the admitted pattern +catalogue has at most six slots. The pattern optimizer is only a search tool. +The published compact witness contains exact integers. `verify_aggregate.py` +checks every equation, capacity and source-window bound using integer arithmetic; +`portable_expand.py` uses only those checked integers. No fractional assignment +or total-unimodularity assertion is used as a literal owner witness. + +## Exact call-copy decomposition + +First allocate the X bins and their slots. For each group and width, assign its +Z roles arbitrarily to slots of that width. A bin may now contain several roles +of one macro-call. That is allowed at this intermediate step. It has at most S +such roles because the entire pattern has at most S slots. + +For one macro-call, regard every remaining role as an edge from its bin to its +width. Let R be the number of call copies still to assign. The maintained +invariants are: width w has R I_w remaining roles, every bin has degree at most +R, and group g has degree D_g at most R n_g. + +To select the next actual call, use a finite lower-bounded network: + +* Source to group g has bounds `[max(0,D_g-(R-1)n_g), n_g]`. +* Group g to each of its nonempty bins has upper bound one and lower bound one + exactly when that bin has degree R. +* Bin to width edges represent the actual remaining roles, with integral + multiplicity capacities. +* Width w must deliver exactly I_w units to the sink. + +The assignment giving each remaining role weight 1/R is a feasible fractional +flow. The group upper bound follows from D_g<=R n_g. For the lower bound, +`D_g/R >= D_g-(R-1)n_g` follows from the same inequality. A bin of degree R +delivers one unit, all other bins deliver at most one, and each width delivers +exactly I_w. Integral capacities and lower bounds give an integral feasible +flow after the standard circulation reduction. The implemented augmenting-path +algorithm produces this integral flow directly. Removing its selected roles +preserves all three invariants with R replaced by R-1. Repeating constructs S +actual calls, each with every required width count, at most one role from a bin, +and at most n_g roles from each group. + +This argument is an all-parameter written realization lemma under its stated +integer-flow and pattern-size hypotheses. Feasibility of this particular +aggregate witness is finite computation, not an all-parameter packing theorem. + +## Physical owners and endpoint availability + +For a group, the physical stock is exactly S copies of its n_g source bins. +A bin containing any role at macro-time hi requires an owner-copy index at +least the largest call-copy index among those endpoint roles. Other bins have +no lower requirement on their owner-copy index. + +For each j, the number of bins requiring owner index greater than j is at most +the number of endpoint roles assigned to actual call-copy indices greater than +j. The preceding decomposition bounds that number by `(S-1-j)n_g`, exactly the +number of physical bins in those owner copies. These nested Hall inequalities +justify sorting bins by decreasing requirement and assigning the physical +owner copies in decreasing order, with n_g bins per owner copy. The construction +checks every resulting requirement separately. Original owner, child and port +labels are retained when allocating each copy's n_g bins. + +The literal chronology is +`(stage,r) at macro-time t -> (stage,r+37*j) at time S*t+j`. +Provider dispatch is copied along that embedding. If a source window has +noninitial lower endpoint lo, every admitted macro-time satisfies t>=lo+1; +therefore `S*t+j > S*lo+k` for every owner-copy k. For an upper endpoint, +t 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. + +T488 additionally uses the exact retained T8 chronology and dispatch documented in T8-PROVENANCE.json, alongside T16-PROVENANCE.json. The three-stream witness changes allocation and chronology, not the staged local operator. diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/UPSTREAM-SOURCE-NOTICE b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/UPSTREAM-SOURCE-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/UPSTREAM-SOURCE-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/integral_network.py b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/integral_network.py new file mode 100644 index 0000000000..a624655e38 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/integral_network.py @@ -0,0 +1,92 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Deterministic lower-bounded integral networks; standard library only. + +The exact algorithm used by the original finite expansion, extracted for portable replay. +""" +from collections import Counter,defaultdict +if not __debug__: + raise RuntimeError('enabled assertions required for exact integral network realization') +W=(4,5,6,7,8,9) +INV=(26,2,18,52,97,213) + +class Network: + def __init__(self,n):self.adj=[[] for _ in range(n)];self.to=[];self.cap=[] + def add(self,u,v,capacity): + assert capacity>=0 + i=len(self.to);self.to.extend((v,u));self.cap.extend((int(capacity),0));self.adj[u].append(i);self.adj[v].append(i+1);return i + def maxflow(self,s,t,limit): + total=0;n=len(self.adj) + while total0:net.add(ss,n,b);target+=b + elif b<0:net.add(n,tt,-b) + got=net.maxflow(ss,tt,target) + assert got==target,('copy circulation',copy,got,target,dict(dg),dict(db)) + selected=[];wc=Counter();gc=Counter();bc=set() + for key,e in handles.items(): + n=net.cap[e^1] + assert n in (0,1) + if n: + b,w=key;i=bucket[key].pop();selected.append(i);wc[w]+=1;g=int(bin_group[b]);gc[g]+=1 + assert b not in bc;bc.add(b);db[b]-=1;dg[g]-=1;copies[i]=copy + assert len(selected)==408 and wc==Counter(dict(zip(W,INV))) + assert all(n<=group_n[g] for g,n in gc.items()) + assert max(db.values(),default=0)<=R-1 and all(n<=(R-1)*group_n[g] for g,n in dg.items()) + stats['flows']+=1;stats['max_nodes']=max(stats['max_nodes'],tt+1);stats['max_edges']=max(stats['max_edges'],len(net.to)//2) + return copies,stats diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/portable_expand.py b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/portable_expand.py new file mode 100644 index 0000000000..1b9457c520 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/portable_expand.py @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Reconstruct the S8 mixedT61 literal owners by deterministic integral networks. +No optimization is run. Requires explicit OWNER_SOURCE_REPO. Expected payload is the fresh independently audited T488 output, never a predecessor owner receipt. +This optional reconstruction takes several minutes and does not run admission. +""" +from pathlib import Path +from array import array +from collections import Counter,defaultdict +import argparse,gzip,hashlib,json,time +import importlib.util +def module(name,file): + spec=importlib.util.spec_from_file_location(name,Path(__file__).resolve().parent/file);m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m);return m +_candidate=module('t488_candidate','verify_candidate.py');candidate_check=_candidate.check;v=_candidate.v +common=v.common;HERE=Path(__file__).resolve().parent;W=v.W;INV=v.INV;LOCAL=v.LOCAL;P=v.P +def check(cert):return candidate_check(cert,'concatenated') +copy_colors=module('t488_network','integral_network.py').copy_colors + +def authenticate(): + pins=common.read(HERE/'INPUT-PINS.json') + for rel,digest in pins.items(): + if common.sha(HERE/rel)!=digest:raise ValueError('changedbuilderinput '+rel) + return pins + +class Rows: + def __init__(self,calls,task_width,task_bin,owner,child,port,order,dispatch,providers): + self.calls,self.width,self.bin,self.owner,self.child,self.port=calls,task_width,task_bin,owner,child,port + self.order,self.dispatch,self.providers=order,dispatch,providers + def __len__(self):return len(self.calls)*408 + def __iter__(self): + offset=array('B',[0])*len(self.owner) + for t,tasks in enumerate(self.calls): + pool=defaultdict(list);pid=self.dispatch[tuple(self.order[t])] + for h,w in enumerate(self.providers[pid]['widths']):pool[w].append(h) + call=[] + for i in sorted(tasks,key=lambda i:(self.width[i],i)): + w=self.width[i];h=pool[w].pop();b=self.bin[i];call.append((h,b,w)) + assert not any(pool.values()) + for h,b,w in sorted(call): + z=offset[b];offset[b]+=w + yield [t,h,self.owner[b],self.child[b],self.port[b],z] + +def write_fill(path,rows): + payload=hashlib.sha256();prefix=json.dumps({'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[]},sort_keys=True,separators=(',',':'))[:-1]+',"rows":[' + with path.open('wb') as raw,gzip.GzipFile(filename='',mode='wb',fileobj=raw,compresslevel=1,mtime=0) as out: + data=prefix.encode();out.write(data);payload.update(data) + for j,row in enumerate(rows): + data=((',' if j else '')+json.dumps(row,separators=(',',':'))).encode();out.write(data);payload.update(data) + data=b']}\n';out.write(data);payload.update(data) + return dict(rows=len(rows),sha256=common.sha(path),payload_sha256=payload.hexdigest()) + +def main(): + ap=argparse.ArgumentParser();ap.add_argument('--out',type=Path,required=True);ap.add_argument('--owner-check',action='store_true');a=ap.parse_args() + pins=authenticate();cert=common.read(HERE/'CANDIDATE.json');primal=check(cert);S=cert['S'];G=cert['groups'];T=61*S + assert T<65616 and S<=128 and len(G)<65616 and 549*S*408<2**32 + c=common.context();order45=cert['order'];win=c.owner.windows(c.template,order45,61);groups=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items(): + for p in range(112):groups[cap,lo,hi].append((o,ch,p)) + groupkeys=sorted(groups);assert [[*g,len(groups[g])] for g in groupkeys]==G + # Source child windows sharing a physical family are pairwise disjoint. + fw=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items():fw[o,c.families[ch]].append((lo,hi)) + for intervals in fw.values(): + for j,(lo,hi) in enumerate(intervals):assert all(max(lo,l)>=min(hi,h) for l,h in intervals[j+1:]) + xg=defaultdict(list);zg=defaultdict(list) + for gi,q,n in cert['x']:xg[gi].append((q,n)) + for gi,t,w,n in cert['z']:zg[gi].append((t,w,n)) + task_width=array('B');task_bin=array('I');bin_group=array('H');required=array('b');macro=[array('I') for _ in range(549)];bin_ranges=[] + for gi,g in enumerate(G): + bstart=len(bin_group);available=defaultdict(lambda:array('I')) + for q,n in sorted(xg[gi]): + widths=[w for w,k in zip(W,q) for _ in range(k)] + for _ in range(n): + b=len(bin_group);bin_group.append(gi);required.append(-1) + for w in widths: + i=len(task_width);task_width.append(w);task_bin.append(b);available[w].append(i) + cursor=Counter() + for t,w,n in sorted(zg[gi]): + ids=available[w][cursor[w]:cursor[w]+n];assert len(ids)==n;macro[t].extend(ids);cursor[w]+=n + assert all(cursor[w]==len(ids) for w,ids in available.items()) + assert len(bin_group)-bstart==g[3]*S;bin_ranges.append((bstart,len(bin_group))) + assert len(task_width)==549*S*408 + actual=[array('I') for _ in range(549*S)];group_n={gi:g[3] for gi,g in enumerate(G)};stats=Counter();t0=time.monotonic() + for t,indices in enumerate(macro): + colors,stat=copy_colors(sorted(indices),task_bin,task_width,bin_group,group_n,S) + for i,cp in colors.items(): + actual[S*t+cp].append(i);b=task_bin[i];gi=bin_group[b] + if t==G[gi][2]:required[b]=max(required[b],cp) + stats['flows']+=stat['flows'];stats['max_nodes']=max(stats['max_nodes'],stat['max_nodes']);stats['max_edges']=max(stats['max_edges'],stat['max_edges']) + if t%40==0:print('PORTABLE_CALL_DECOMPOSITION',t,'seconds',round(time.monotonic()-t0,2),flush=True) + assert all(len(call)==408 for call in actual) + owners=array('H',[0])*len(bin_group);children=array('H',[0])*len(bin_group);ports=array('B',[0])*len(bin_group) + for gi,(lo,hi) in enumerate(bin_ranges): + base=groups[groupkeys[gi]];m=len(base) + for j,b in enumerate(sorted(range(lo,hi),key=lambda b:(required[b],b),reverse=True)): + cp=S-1-j//m;o,ch,p=base[j%m];assert cp>=required[b] + owners[b]=o+61*cp;children[b]=ch;ports[b]=p + order=[[s,r+61*cp] for s,r in order45 for cp in range(S)];basedispatch={(s,r):pid for s,r,pid in cert['dispatch']};dispatch={(s,r+61*cp):basedispatch[s,r] for s,r in order45 for cp in range(S)} + providers=common.read(HERE/'PROVIDERS.json') + for provider in providers.values():provider['actual_paid_profile']={int(k):v for k,v in provider['actual_paid_profile'].items()} + for pid,provider in providers.items(): + assert provider['widths']==[w-int(h in (389,397)) for h,w in enumerate(c.providers[pid]['widths'])] + assert provider['actual_paid_profile']==LOCAL + a.out.mkdir(parents=True,exist_ok=False) + for name,obj in [('ORDER.json',order),('DISPATCH.json',[[s,r,dispatch[s,r]] for s,r in order]),('PROFILE.json',cert['profile']),('PROVIDERS.json',common.read(HERE/'PROVIDERS.json'))]: + # The source profile file uses indented sorted-rank formatting. + if name=='PROFILE.json':data=json.dumps({int(k):v for k,v in sorted(cert['profile'].items(),key=lambda kv:int(kv[0]))},indent=2)+'\n' + else:data=json.dumps(obj,separators=(',',':'))+'\n' + (a.out/name).write_text(data) + assert common.sha(a.out/name)==common.read(HERE/'EXPECTED.json')['literal_files'][name],('changedliteralinput',name) + rows=Rows(actual,task_width,task_bin,owners,children,ports,order,dispatch,providers);made=write_fill(a.out/'FILL.json.gz',rows) + expected=common.read(HERE/'EXPECTED.json') + # Container bytes are provenance only: zlib streams may vary across runtimes. + assert made['rows']==549*S*408==expected['rows'] and made['payload_sha256']==expected['payload_sha256'] + assert primal['profile']=={int(k):v for k,v in cert['profile'].items()} + report=dict(status='PASS_STANDARD_LIBRARY_SEMANTIC_LITERAL_REPLAY',replicas=T,calls=549*S,roles=len(rows),physical=896*T+509,materialized=made,decomposition=dict(stats),primal=primal,fresh_retained_owner_check=False,scope='Fresh mixedT61S8 exact integer networks and literal generation. No predecessor owner receipt is reused as candidate proof. Fresh independent literal audit and full release required.') + if a.owner_check: + fill={'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[],'rows':rows} + result,_,_=c.owner.check(T,order,fill,dispatch,cert['profile'],c.plan,c.template,providers);report['fresh_retained_owner_check']=True;report['owner_check']=result + (a.out/'PORTABLE-REPLAY.json').write_text(json.dumps(report,indent=2,sort_keys=True)+'\n') + print('PORTABLE_REPLAY_PASS',json.dumps(made),flush=True) + +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/source_context.py b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/source_context.py new file mode 100644 index 0000000000..9731888ac7 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/source_context.py @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Solver-independent integer primal check of the new aggregate owner flow. + +Standard library only. Source geometry is read from the attributed frozen source +template through its retained window routine; literal copied owners are checked +separately. This certifies one finite primal, not LP optimality. +""" +from pathlib import Path +from collections import Counter,defaultdict +import sys,json,gzip,hashlib,os +if not __debug__: + raise SystemExit('unoptimized Python required by retained owner engines') +HERE=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'): + raise SystemExit('OWNER_SOURCE_REPO must identify the declared source checkout or export') +ROOT=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +P=ROOT/'research/coupled-carrier-cap740' +# Authenticate every imported predecessor before executing any of its code. +_pins=json.loads((HERE/'SOURCE-PINS.json').read_text()) +for _rel,_digest in _pins['repo_files'].items(): + _path=ROOT/_rel + if not _path.is_file() or _path.is_symlink() or hashlib.sha256(_path.read_bytes()).hexdigest()!=_digest: + raise ValueError('stale retained source '+_rel) +import types +common=types.ModuleType('staged_owner_retained_common');common.__file__=str(P/'common.py') +exec(compile((P/'common.py').read_bytes(),common.__file__,'exec'),common.__dict__) +W=(4,5,6,7,8,9);INV=Counter(dict(zip(W,(26,2,18,52,97,213)))) +LOCAL={1:2439,2:726,3:224,4:102,5:20,8:8} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/verify_candidate.py b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/verify_candidate.py new file mode 100644 index 0000000000..9da29b43eb --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3633/owners/verify_candidate.py @@ -0,0 +1,45 @@ +import sys +if not __debug__ or sys.flags.optimize:raise RuntimeError('Enabled assertions required before owner replay') +from pathlib import Path +from collections import Counter,defaultdict +import json,os,importlib.util,hashlib,argparse +P=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'):raise ValueError('explicitOWNER_SOURCE_REPOrequired') +s=importlib.util.spec_from_file_location('actual_owner',P/'source_context.py');v=importlib.util.module_from_spec(s);s.loader.exec_module(v) +def need(x,m): + if not x:raise ValueError(m) +def check(d,kind): + # Regenerate expectedclock from authenticated actualinputstreams, not candidate fields. + import gzip + pins=json.loads((P/'INPUT-PINS.json').read_text()) + for rel,sha in pins.items():need(hashlib.sha256((P/rel).read_bytes()).hexdigest()==sha,'inputpin') + a=json.loads((P/'ORDER37.json').read_text());b=[[i,j+37]for i,j in json.loads((P/'T8-ORDER.json').read_text())]+[[i,j+45]for i,j in json.loads((P/'T16-ORDER.json').read_text())] + if kind=='concatenated':order=a+b + else: + from fractions import Fraction as F + order=[z[2]for z in sorted([(F(2*i+1,666),0,z)for i,z in enumerate(a)]+[(F(2*i+1,288),1,z)for i,z in enumerate(b)])] + need(kind=='concatenated' and d['order']==order,'actualsourceclock'); + providers=json.loads((P/'PROVIDERS.json').read_text());pins=json.loads((P/'ARTIFACTS.json').read_text());need(hashlib.sha256((P/'PROVIDERS.json').read_bytes()).hexdigest()==pins['PROVIDERS.json'],'providerpin') + for provider in providers.values(): + need(Counter(provider['widths'])==v.INV,'providerwidths');need({int(k):n for k,n in provider['actual_paid_profile'].items()}==v.LOCAL,'providerlocal') + c=v.common.context();dispatch=[[ss,rr,c.dispatch[ss,rr]]for ss,rr in a]+[[ss,rr+37,pid]for ss,rr,pid in json.loads((P/'T8-DISPATCH.json').read_text())]+[[ss,rr+45,pid]for ss,rr,pid in json.loads((P/'T16-DISPATCH.json').read_text())];need(d['dispatch']==dispatch,'actualdispatch');win=c.owner.windows(c.template,order,61);g=Counter();fw=defaultdict(list) + for (o,ch),(cap,lo,hi)in win.items():g[cap,lo,hi]+=112;fw[o,c.families[ch]].append((lo,hi)) + need(all(all(max(lo,l)>=min(hi,h)for l,h in rows[i+1:])for rows in fw.values()for i,(lo,hi)in enumerate(rows)),'disjointfamilywindows') + G=[[*k,n]for k,n in sorted(g.items())];need(d['groups']==G,'actualgroups');S=d['S'];need(type(S)is int and S>0,'positiveintegralS');need(d['baseT']==61,'baseT');need({int(k):n for k,n in d['local_profile'].items()}==v.LOCAL,'candidate local profile');need(d['widths']==list(v.W),'widths');need({int(k):n for k,n in d['inventory'].items()}==dict(v.INV),'actualinventory') + xb=Counter();xw=Counter();idle=Counter();seen=set() + for gi,q,n in d['x']: + need(type(gi)is int and 0<=gi=0 for z in q)and type(n)is int and n>0,'patternintegers');need((gi,tuple(q))not in seen,'duplicatepattern');seen.add((gi,tuple(q))) + used=sum(w*z for w,z in zip(v.W,q));need(used<=G[gi][0]and sum(q)<=S,'patterncapacity');xb[gi]+=n + for w,z in zip(v.W,q):xw[gi,w]+=z*n + if used0,'flowintegers');need((gi,t,w)not in seen,'duplicateflow');seen.add((gi,t,w));need(G[gi][1]Q('.001730071864705779882540')-Q(1,10**46)-Q(1,10**70),'strict improvement over PR3626') + (work/'RESULT.json').write_text(json.dumps({'status':'PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE','kappa':r['kappa'],'source_manifest_sha256':MANIFEST,'stages':stages},indent=2));print('PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE',r['kappa']) +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/scripts/integrate.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/scripts/integrate.py new file mode 100644 index 0000000000..4a29f851a7 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/scripts/integrate.py @@ -0,0 +1,87 @@ +import copy,gzip,hashlib,json,shutil,sys +from pathlib import Path +import argparse +ap=argparse.ArgumentParser();ap.add_argument('--parent',type=Path,required=True);ap.add_argument('--out',type=Path,required=True);ap.add_argument('--data',type=Path,default=Path(__file__).resolve().parents[1]/'data');a=ap.parse_args() +H=a.data.resolve();P=a.parent.resolve();OUT=a.out.resolve();OUT.mkdir(exist_ok=False) +S=OUT/'source';shutil.copytree(P/'source',S);D=S/'new/borrow' +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def rd(p):return json.loads(gzip.decompress(p.read_bytes()) if p.suffix=='.gz' else p.read_bytes()) +def save(p,x):p.write_text(json.dumps(x,sort_keys=True,indent=2)+'\n') +def tree(p):return {f.relative_to(p).as_posix():sha(f) for f in sorted(p.rglob('*')) if f.is_file() and f!=p/'MANIFEST.json'} +def rep(s,a,b):assert s.count(a)==1,(a,s.count(a));return s.replace(a,b) +oldmanifest=sha(P/'source/MANIFEST.json');assert oldmanifest=='318ede57c79d10323fb1918f7be4d451d1fcdac01c6456fe9851d51d05d59453';assert tree(P/'source')==rd(P/'source/MANIFEST.json') +(D/'release-retime').mkdir() +code='''# SPDX-License-Identifier: Apache-2.0 +# New staged release retiming with substantial OpenAI Codex assistance. +# Builds on Ross Richardson PR3605 and all retained supplier attribution. +import copy,hashlib,json +import preload_move as pm + +def canon(w):return hashlib.sha256(json.dumps(w,sort_keys=True,separators=(',',':')).encode()).hexdigest() +def apply(parent,record): + if canon(parent)!=record['source_canonical_sha256']:raise ValueError('retime source canonical hash') + x=copy.deepcopy(parent) + if [e['index'] for e in record['edits']]!=[591,641]:raise ValueError('exact retiming addresses') + for e in record['edits']: + i=e['index'];old=e['old'];new=e['new'] + if x['B'][i:i+2]!=old:raise ValueError('retime source gate preimage') + if old[0][0]!=old[1][0]!='add':raise ValueError('ADD release') + if old[0][1]==old[1][1] or old[0][2]!=old[1][2]:raise ValueError('commuting distinct targets common source') + if new[0]!=old[1] or new[1][:-1]!=old[0][:-1]:raise ValueError('literal commuting permutation') + if any(i= D_g-(R-1)n_g` follows from the same inequality. A bin of degree R +delivers one unit, all other bins deliver at most one, and each width delivers +exactly I_w. Integral capacities and lower bounds give an integral feasible +flow after the standard circulation reduction. The implemented augmenting-path +algorithm produces this integral flow directly. Removing its selected roles +preserves all three invariants with R replaced by R-1. Repeating constructs S +actual calls, each with every required width count, at most one role from a bin, +and at most n_g roles from each group. + +This argument is an all-parameter written realization lemma under its stated +integer-flow and pattern-size hypotheses. Feasibility of this particular +aggregate witness is finite computation, not an all-parameter packing theorem. + +## Physical owners and endpoint availability + +For a group, the physical stock is exactly S copies of its n_g source bins. +A bin containing any role at macro-time hi requires an owner-copy index at +least the largest call-copy index among those endpoint roles. Other bins have +no lower requirement on their owner-copy index. + +For each j, the number of bins requiring owner index greater than j is at most +the number of endpoint roles assigned to actual call-copy indices greater than +j. The preceding decomposition bounds that number by `(S-1-j)n_g`, exactly the +number of physical bins in those owner copies. These nested Hall inequalities +justify sorting bins by decreasing requirement and assigning the physical +owner copies in decreasing order, with n_g bins per owner copy. The construction +checks every resulting requirement separately. Original owner, child and port +labels are retained when allocating each copy's n_g bins. + +The literal chronology is +`(stage,r) at macro-time t -> (stage,r+37*j) at time S*t+j`. +Provider dispatch is copied along that embedding. If a source window has +noninitial lower endpoint lo, every admitted macro-time satisfies t>=lo+1; +therefore `S*t+j > S*lo+k` for every owner-copy k. For an upper endpoint, +t 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/independent_literal.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/independent_literal.py new file mode 100644 index 0000000000..32755776c1 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/independent_literal.py @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Path-adapted copy of the parent independent owner audit. +Original SHA256 1001cb1c8b4ee1f93c23b58b094565ec1b3931eee0ea091a23504696e380be9e. +Filesystem/source authentication and output paths adapted; mathematical predicates retained. +""" +"""Independent vectorized audit of the literal staged-pair owner journal. + +No optimizer, producer, inherited owner checker or reconstructor is imported. +Uses the source execution template and the actual checked native frame tables. +""" +from pathlib import Path +from collections import Counter +import gzip,hashlib,json,os,sys +import numpy as np +R=Path(__file__).resolve().parent +if not __debug__:raise SystemExit('unoptimized Python required') +for _key in ('OWNER_SOURCE_REPO','OWNER_LITERAL_DIR','OWNER_NATIVE_DIR','OWNER_AUDIT_OUTPUT'): + if not os.environ.get(_key):raise SystemExit('missing '+_key) +A=Path(os.environ['OWNER_LITERAL_DIR']).resolve() +NATIVE=Path(os.environ['OWNER_NATIVE_DIR']).resolve() +S=Path(os.environ['OWNER_SOURCE_REPO']).resolve()/'research/rank7-joint-endframes/allocation/vendor' +def need(v,m): + if not v:raise ValueError(m) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def rank(v): + piv={} + for q in v: + while q: + h=q.bit_length() + if h in piv:q^=piv[h] + else:piv[h]=q;break + return len(piv) +for rel,digest in read(R/'ARTIFACTS.json').items(): + f=R/rel;need(f.is_file() and not f.is_symlink() and sha(f)==digest,'frozen audit artifact '+rel) +paths=[A/n for n in ('FILL.json.gz','ORDER.json','DISPATCH.json','PROFILE.json')]+[S/'PLAN.json.gz',S/'TEMPLATE.json.gz'] +paths += [NATIVE/f'checked-{p}/CANONICAL-WORD.json.gz' for p in ('base','extra')] +source_pins=read(R/'SOURCE-PINS.json') +repo=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +for rel,digest in source_pins['repo_files'].items():need(sha(repo/rel)==digest,'retained source pin '+rel) +for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==source_pins['native_canonical'][tag]['canonical_sha256'],'actual native canonical pin') +pins={str(p):sha(p) for p in paths} +expected=read(R/'EXPECTED.json');need(hashlib.sha256(gzip.decompress(paths[0].read_bytes())).hexdigest()==expected['payload_sha256'],'freshT530payload') +baseorder=read(R/'ORDER37.json')+[[s,r+37]for s,r in read(R/'T16-ORDER.json')] +need(read(paths[1])==[[s,r+53*cp]for s,r in baseorder for cp in range(10)],'exactmixedsourceclock') +basedispatch={(s,r):p for s,r,p in read(R/'DISPATCH37.json')};basedispatch.update({(s,r+37):p for s,r,p in read(R/'T16-DISPATCH.json')}) +need(read(paths[2])==[[s,r+53*cp,basedispatch[s,r]]for s,r in baseorder for cp in range(10)],'exactsourceproviderdispatch') +order=read(paths[1]);dispatch=read(paths[2]);profile={int(k):v for k,v in read(paths[3]).items()};plan=read(paths[4]);template=read(paths[5]) +T=530;N=9*T +need(len(order)==N and len(set(map(tuple,order)))==N,'call coverage') +clock={tuple(call):t for t,call in enumerate(order)} +need(set(clock)=={(s,r) for s in range(9) for r in range(T)},'exact source calls') +need(all([clock[s,r] for s in range(9)]==sorted(clock[s,r] for s in range(9)) for r in range(T)),'per-replica order') +D={(s,r):p for s,r,p in dispatch};need(len(dispatch)==N and set(D)==set(clock),'dispatch coverage') +need(Counter(D.values())=={'extra': 2090, 'gauge44': 2680},'provider count') +# Reconstruct source windows per replica from the actual source event sequence. +children={x['child']:x['rank'] for x in template['idle_children']};K=max(children)+1 +cap=np.zeros((T,K),dtype=np.int64);lo=np.full((T,K),N,dtype=np.int64);hi=np.full((T,K),-2,dtype=np.int64) +local_pair={x['stage']:x['pair'] for x in template['recipe'] if x['kind']=='local'} +for r in range(T): + touched={};t=None + for ev in template['execution_schedule']: + kind=ev['kind'] + if kind in ('bank_padding_cover_sweep','translate_every_live_family'):continue + if kind=='local_cover_sweep': + t=clock[ev['stage'],r];touched[local_pair[ev['stage']]]=t + elif kind=='bridge': + need(t is not None,'bridge source');touched[ev['src']]=t;touched[ev['dst']]=t + elif kind=='idle_cover_sweep': + need(t is not None,'idle source') + for c in ev['child_indices']: + if c in children: + need(cap[r,c]==0,'unique source child');cap[r,c]=children[c];lo[r,c]=touched.get(ev['pair'],-1);hi[r,c]=t + else:need(kind in ('terminal_Y_translations','terminal'),'known source event') +need(np.all(cap[:,list(children)]>0),'all source windows') +fam=np.full(K,-1,np.int64) +for c in children:fam[c]=2*plan['pairs'][str(c)]+plan['sides'][str(c)] +widths={};L=None +for tag,pid in [('base','gauge44'),('extra','extra')]: + w=read(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz') + need(w['R']==408 and len(w['zero_buffers'])==91,'native helper stock') + widths[pid]=np.array([rank(w['frames'][w['final'][224+h]])-rank(w['frames'][w['start'][224+h]]) for h in range(408)],dtype=np.int64) + need(Counter(widths[pid])=={4:26,5:2,6:18,7:52,8:97,9:213},'actual native widths') + loc={int(k):v for k,v in w['local_profile'].items()} + need(L is None or L==loc,'common actual native bill');L=loc +need(L=={1:2439,2:726,3:224,4:102,5:20,8:8},'new local bill') +bycall=np.stack([widths[D[tuple(call)]] for call in order]) +j=read(A/'FILL.json.gz');need(j['columns']==['time','helper','owner_replica','child','port','offset'] and j['dispatch_overrides']==[],'journal schema') +need(all(len(row)==6 and all(type(v) is int for v in row) for row in j['rows']),'literal integer roles') +rows=np.array(j['rows'],dtype=np.int64);del j +need(rows.shape==(N*408,6),'literal role shape') +need(np.array_equal(rows[:,0],np.repeat(np.arange(N),408)) and np.array_equal(rows[:,1],np.tile(np.arange(408),N)),'complete literal ordered helper identities') +t,h,o,c,p,z=rows.T +need(np.all((o>=0)&(o=0)&(c=0)&(p<112)),'owner bounds') +need(np.all(cap[o,c]>0),'declared source child') +need(np.all((lo[o,c]=0)&(z+w<=cap[o,c])),'actual widths and capacity') +binid=(o*K+c)*112+p +idx=np.lexsort((t,binid));bins=binid[idx];ws=w[idx];starts=np.r_[True,bins[1:]!=bins[:-1]] +cs=np.cumsum(ws,dtype=np.int64)-ws;baseline=np.maximum.accumulate(np.where(starts,cs,0));expected=cs-baseline +need(np.array_equal(z[idx],expected),'every chronological pending mask is a compact prefix') +used=np.zeros(T*K*112,np.int64);np.add.at(used,binid,w) +allcap=np.repeat(cap.reshape(-1),112);valid=allcap>0 +need(np.all(used[~valid]==0) and np.all(used<=allcap),'full used-bin mass') +idle=Counter(map(int,(allcap-used)[valid]));idle.pop(0,None) +H=Counter({r:n*N for r,n in L.items()});H.update(idle) +need(dict(H)==profile and sum(r*n for r,n in H.items())==65088*T,'independent complete histogram') +# Small semantic predicates test each independent gate on actual changed inputs. +controls=[] +def reject(name,test): + need(not test(), 'control accepted '+name);controls.append(name) +reject('duplicate helper',lambda: np.array_equal(np.r_[rows[0,1],rows[:-1,1]],np.tile(np.arange(408),N))) +reject('strict lower endpoint used as available',lambda: bool(lo[o[0],c[0]]=0 + i=len(self.to);self.to.extend((v,u));self.cap.extend((int(capacity),0));self.adj[u].append(i);self.adj[v].append(i+1);return i + def maxflow(self,s,t,limit): + total=0;n=len(self.adj) + while total0:net.add(ss,n,b);target+=b + elif b<0:net.add(n,tt,-b) + got=net.maxflow(ss,tt,target) + assert got==target,('copy circulation',copy,got,target,dict(dg),dict(db)) + selected=[];wc=Counter();gc=Counter();bc=set() + for key,e in handles.items(): + n=net.cap[e^1] + assert n in (0,1) + if n: + b,w=key;i=bucket[key].pop();selected.append(i);wc[w]+=1;g=int(bin_group[b]);gc[g]+=1 + assert b not in bc;bc.add(b);db[b]-=1;dg[g]-=1;copies[i]=copy + assert len(selected)==408 and wc==Counter(dict(zip(W,INV))) + assert all(n<=group_n[g] for g,n in gc.items()) + assert max(db.values(),default=0)<=R-1 and all(n<=(R-1)*group_n[g] for g,n in dg.items()) + stats['flows']+=1;stats['max_nodes']=max(stats['max_nodes'],tt+1);stats['max_edges']=max(stats['max_edges'],len(net.to)//2) + return copies,stats diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/portable_expand.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/portable_expand.py new file mode 100644 index 0000000000..431654fe59 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/portable_expand.py @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Reconstruct the S10 mixedT53 literal owners by deterministic integral networks. +No optimization is run. Requires explicit OWNER_SOURCE_REPO. Expected payload is the fresh independently audited T530 output, never a predecessor owner receipt. +This optional reconstruction takes several minutes and does not run admission. +""" +from pathlib import Path +from array import array +from collections import Counter,defaultdict +import argparse,gzip,hashlib,json,time +import importlib.util +def module(name,file): + spec=importlib.util.spec_from_file_location(name,Path(__file__).resolve().parent/file);m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m);return m +_candidate=module('t530_candidate','verify_candidate.py');candidate_check=_candidate.check;v=_candidate.v +common=v.common;HERE=Path(__file__).resolve().parent;W=v.W;INV=v.INV;LOCAL=v.LOCAL;P=v.P +def check(cert):return candidate_check(cert,'concatenated') +copy_colors=module('t530_network','integral_network.py').copy_colors + +def authenticate(): + pins=common.read(HERE/'INPUT-PINS.json') + for rel,digest in pins.items(): + if common.sha(HERE/rel)!=digest:raise ValueError('changedbuilderinput '+rel) + return pins + +class Rows: + def __init__(self,calls,task_width,task_bin,owner,child,port,order,dispatch,providers): + self.calls,self.width,self.bin,self.owner,self.child,self.port=calls,task_width,task_bin,owner,child,port + self.order,self.dispatch,self.providers=order,dispatch,providers + def __len__(self):return len(self.calls)*408 + def __iter__(self): + offset=array('B',[0])*len(self.owner) + for t,tasks in enumerate(self.calls): + pool=defaultdict(list);pid=self.dispatch[tuple(self.order[t])] + for h,w in enumerate(self.providers[pid]['widths']):pool[w].append(h) + call=[] + for i in sorted(tasks,key=lambda i:(self.width[i],i)): + w=self.width[i];h=pool[w].pop();b=self.bin[i];call.append((h,b,w)) + assert not any(pool.values()) + for h,b,w in sorted(call): + z=offset[b];offset[b]+=w + yield [t,h,self.owner[b],self.child[b],self.port[b],z] + +def write_fill(path,rows): + payload=hashlib.sha256();prefix=json.dumps({'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[]},sort_keys=True,separators=(',',':'))[:-1]+',"rows":[' + with path.open('wb') as raw,gzip.GzipFile(filename='',mode='wb',fileobj=raw,compresslevel=1,mtime=0) as out: + data=prefix.encode();out.write(data);payload.update(data) + for j,row in enumerate(rows): + data=((',' if j else '')+json.dumps(row,separators=(',',':'))).encode();out.write(data);payload.update(data) + data=b']}\n';out.write(data);payload.update(data) + return dict(rows=len(rows),sha256=common.sha(path),payload_sha256=payload.hexdigest()) + +def main(): + ap=argparse.ArgumentParser();ap.add_argument('--out',type=Path,required=True);ap.add_argument('--owner-check',action='store_true');a=ap.parse_args() + pins=authenticate();cert=common.read(HERE/'CANDIDATE.json');primal=check(cert);S=cert['S'];G=cert['groups'];T=53*S + assert T<65536 and S<=128 and len(G)<65536 and 477*S*408<2**32 + c=common.context();order45=cert['order'];win=c.owner.windows(c.template,order45,53);groups=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items(): + for p in range(112):groups[cap,lo,hi].append((o,ch,p)) + groupkeys=sorted(groups);assert [[*g,len(groups[g])] for g in groupkeys]==G + # Source child windows sharing a physical family are pairwise disjoint. + fw=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items():fw[o,c.families[ch]].append((lo,hi)) + for intervals in fw.values(): + for j,(lo,hi) in enumerate(intervals):assert all(max(lo,l)>=min(hi,h) for l,h in intervals[j+1:]) + xg=defaultdict(list);zg=defaultdict(list) + for gi,q,n in cert['x']:xg[gi].append((q,n)) + for gi,t,w,n in cert['z']:zg[gi].append((t,w,n)) + task_width=array('B');task_bin=array('I');bin_group=array('H');required=array('b');macro=[array('I') for _ in range(477)];bin_ranges=[] + for gi,g in enumerate(G): + bstart=len(bin_group);available=defaultdict(lambda:array('I')) + for q,n in sorted(xg[gi]): + widths=[w for w,k in zip(W,q) for _ in range(k)] + for _ in range(n): + b=len(bin_group);bin_group.append(gi);required.append(-1) + for w in widths: + i=len(task_width);task_width.append(w);task_bin.append(b);available[w].append(i) + cursor=Counter() + for t,w,n in sorted(zg[gi]): + ids=available[w][cursor[w]:cursor[w]+n];assert len(ids)==n;macro[t].extend(ids);cursor[w]+=n + assert all(cursor[w]==len(ids) for w,ids in available.items()) + assert len(bin_group)-bstart==g[3]*S;bin_ranges.append((bstart,len(bin_group))) + assert len(task_width)==477*S*408 + actual=[array('I') for _ in range(477*S)];group_n={gi:g[3] for gi,g in enumerate(G)};stats=Counter();t0=time.monotonic() + for t,indices in enumerate(macro): + colors,stat=copy_colors(sorted(indices),task_bin,task_width,bin_group,group_n,S) + for i,cp in colors.items(): + actual[S*t+cp].append(i);b=task_bin[i];gi=bin_group[b] + if t==G[gi][2]:required[b]=max(required[b],cp) + stats['flows']+=stat['flows'];stats['max_nodes']=max(stats['max_nodes'],stat['max_nodes']);stats['max_edges']=max(stats['max_edges'],stat['max_edges']) + if t%40==0:print('PORTABLE_CALL_DECOMPOSITION',t,'seconds',round(time.monotonic()-t0,2),flush=True) + assert all(len(call)==408 for call in actual) + owners=array('H',[0])*len(bin_group);children=array('H',[0])*len(bin_group);ports=array('B',[0])*len(bin_group) + for gi,(lo,hi) in enumerate(bin_ranges): + base=groups[groupkeys[gi]];m=len(base) + for j,b in enumerate(sorted(range(lo,hi),key=lambda b:(required[b],b),reverse=True)): + cp=S-1-j//m;o,ch,p=base[j%m];assert cp>=required[b] + owners[b]=o+53*cp;children[b]=ch;ports[b]=p + order=[[s,r+53*cp] for s,r in order45 for cp in range(S)];t8dispatch={(s,r):pid for s,r,pid in common.read(HERE/'T16-DISPATCH.json')};dispatch={(s,r+53*cp):(c.dispatch[s,r] if r<37 else t8dispatch[s,r-37]) for s,r in order45 for cp in range(S)} + providers=common.read(HERE/'PROVIDERS.json') + for provider in providers.values():provider['actual_paid_profile']={int(k):v for k,v in provider['actual_paid_profile'].items()} + for pid,provider in providers.items(): + assert provider['widths']==[w-int(h in (389,397)) for h,w in enumerate(c.providers[pid]['widths'])] + assert provider['actual_paid_profile']==LOCAL + a.out.mkdir(parents=True,exist_ok=False) + for name,obj in [('ORDER.json',order),('DISPATCH.json',[[s,r,dispatch[s,r]] for s,r in order]),('PROFILE.json',cert['profile']),('PROVIDERS.json',common.read(HERE/'PROVIDERS.json'))]: + # The source profile file uses indented sorted-rank formatting. + if name=='PROFILE.json':data=json.dumps({int(k):v for k,v in sorted(cert['profile'].items(),key=lambda kv:int(kv[0]))},indent=2)+'\n' + else:data=json.dumps(obj,separators=(',',':'))+'\n' + (a.out/name).write_text(data) + assert common.sha(a.out/name)==common.read(HERE/'EXPECTED.json')['literal_files'][name],('changedliteralinput',name) + rows=Rows(actual,task_width,task_bin,owners,children,ports,order,dispatch,providers);made=write_fill(a.out/'FILL.json.gz',rows) + expected=common.read(HERE/'EXPECTED.json') + # Container bytes are provenance only: zlib streams may vary across runtimes. + assert made['rows']==477*S*408==expected['rows'] and made['payload_sha256']==expected['payload_sha256'] + assert primal['profile']=={int(k):v for k,v in cert['profile'].items()} + report=dict(status='PASS_STANDARD_LIBRARY_SEMANTIC_LITERAL_REPLAY',replicas=T,calls=477*S,roles=len(rows),physical=896*T+509,materialized=made,decomposition=dict(stats),primal=primal,fresh_retained_owner_check=False,scope='Fresh mixedT53S10 exact integer networks and literal generation. No predecessor owner receipt is reused as candidate proof. Fresh independent literal audit and full release required.') + if a.owner_check: + fill={'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[],'rows':rows} + result,_,_=c.owner.check(T,order,fill,dispatch,cert['profile'],c.plan,c.template,providers);report['fresh_retained_owner_check']=True;report['owner_check']=result + (a.out/'PORTABLE-REPLAY.json').write_text(json.dumps(report,indent=2,sort_keys=True)+'\n') + print('PORTABLE_REPLAY_PASS',json.dumps(made),flush=True) + +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/source_context.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/source_context.py new file mode 100644 index 0000000000..9731888ac7 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/source_context.py @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Solver-independent integer primal check of the new aggregate owner flow. + +Standard library only. Source geometry is read from the attributed frozen source +template through its retained window routine; literal copied owners are checked +separately. This certifies one finite primal, not LP optimality. +""" +from pathlib import Path +from collections import Counter,defaultdict +import sys,json,gzip,hashlib,os +if not __debug__: + raise SystemExit('unoptimized Python required by retained owner engines') +HERE=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'): + raise SystemExit('OWNER_SOURCE_REPO must identify the declared source checkout or export') +ROOT=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +P=ROOT/'research/coupled-carrier-cap740' +# Authenticate every imported predecessor before executing any of its code. +_pins=json.loads((HERE/'SOURCE-PINS.json').read_text()) +for _rel,_digest in _pins['repo_files'].items(): + _path=ROOT/_rel + if not _path.is_file() or _path.is_symlink() or hashlib.sha256(_path.read_bytes()).hexdigest()!=_digest: + raise ValueError('stale retained source '+_rel) +import types +common=types.ModuleType('staged_owner_retained_common');common.__file__=str(P/'common.py') +exec(compile((P/'common.py').read_bytes(),common.__file__,'exec'),common.__dict__) +W=(4,5,6,7,8,9);INV=Counter(dict(zip(W,(26,2,18,52,97,213)))) +LOCAL={1:2439,2:726,3:224,4:102,5:20,8:8} diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/test_owner_guards.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/test_owner_guards.py new file mode 100644 index 0000000000..fbe816a2ac --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/test_owner_guards.py @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Apache-2.0 +import pathlib,json,copy,subprocess,sys,tempfile,shutil,importlib.util +P=pathlib.Path(__file__).resolve().parent +def need(x,m): + if not x:raise ValueError(m) +def main(): + count=0 + with tempfile.TemporaryDirectory()as t: + d=pathlib.Path(t);out=d/'must-not-exist' + for name in ('verify_owner.py','verify_candidate.py','portable_expand.py','independent_literal.py','integral_network.py','source_context.py'): + r=subprocess.run([sys.executable,'-I','-O','-B',str(P/name),'--out',str(out)],capture_output=True,text=True) + need(r.returncode and 'Enabled assertions required'in r.stderr and not out.exists(),'optimized gate '+name);count+=1 + q=d/'corrupt';shutil.copytree(P,q);(q/'CANDIDATE.json').write_bytes((q/'CANDIDATE.json').read_bytes()+b'x') + r=subprocess.run([sys.executable,'-I','-B',str(q/'verify_owner.py')],capture_output=True,text=True);need(r.returncode and 'frozen owner artifact'in r.stderr,'certificate corruption');count+=1 + spec=importlib.util.spec_from_file_location('check_controls',P/'verify_candidate.py');v=importlib.util.module_from_spec(spec);spec.loader.exec_module(v);x=json.loads((P/'CANDIDATE.json').read_text());v.check(x,'concatenated') + for field,value in [('order',x['order'][::-1]),('groups',[]),('inventory',{}),('profile',{})]: + d=copy.deepcopy(x);d[field]=value + try:v.check(d,'concatenated') + except ValueError:count+=1 + else:raise ValueError('accepted semantic corruption '+field) + print('PASS_OWNER_GUARDS',count) +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/verify_candidate.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/verify_candidate.py new file mode 100644 index 0000000000..ac74cbc4b8 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/owners/verify_candidate.py @@ -0,0 +1,45 @@ +import sys +if not __debug__ or sys.flags.optimize:raise RuntimeError('Enabled assertions required before owner replay') +from pathlib import Path +from collections import Counter,defaultdict +import json,os,importlib.util,hashlib,argparse +P=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'):raise ValueError('explicitOWNER_SOURCE_REPOrequired') +s=importlib.util.spec_from_file_location('actual_owner',P/'source_context.py');v=importlib.util.module_from_spec(s);s.loader.exec_module(v) +def need(x,m): + if not x:raise ValueError(m) +def check(d,kind): + # Regenerate expectedclock from authenticated actualinputstreams, not candidate fields. + import gzip + pins=json.loads((P/'INPUT-PINS.json').read_text()) + for rel,sha in pins.items():need(hashlib.sha256((P/rel).read_bytes()).hexdigest()==sha,'inputpin') + a=json.loads((P/'ORDER37.json').read_text());b=[[i,j+37]for i,j in json.loads((P/'T16-ORDER.json').read_text())] + if kind=='concatenated':order=a+b + else: + from fractions import Fraction as F + order=[z[2]for z in sorted([(F(2*i+1,666),0,z)for i,z in enumerate(a)]+[(F(2*i+1,288),1,z)for i,z in enumerate(b)])] + need(d['order']==order,'actualsourceclock'); + providers=json.loads((P/'PROVIDERS.json').read_text());pins=json.loads((P/'ARTIFACTS.json').read_text());need(hashlib.sha256((P/'PROVIDERS.json').read_bytes()).hexdigest()==pins['PROVIDERS.json'],'providerpin') + for provider in providers.values(): + need(Counter(provider['widths'])==v.INV,'providerwidths');need({int(k):n for k,n in provider['actual_paid_profile'].items()}==v.LOCAL,'providerlocal') + c=v.common.context();win=c.owner.windows(c.template,order,53);g=Counter();fw=defaultdict(list) + for (o,ch),(cap,lo,hi)in win.items():g[cap,lo,hi]+=112;fw[o,c.families[ch]].append((lo,hi)) + need(all(all(max(lo,l)>=min(hi,h)for l,h in rows[i+1:])for rows in fw.values()for i,(lo,hi)in enumerate(rows)),'disjointfamilywindows') + G=[[*k,n]for k,n in sorted(g.items())];need(d['groups']==G,'actualgroups');S=d['S'];need(type(S)is int and S>0,'positiveintegralS');need(d['widths']==list(v.W),'widths');need({int(k):n for k,n in d['inventory'].items()}==dict(v.INV),'actualinventory') + xb=Counter();xw=Counter();idle=Counter();seen=set() + for gi,q,n in d['x']: + need(type(gi)is int and 0<=gi=0 for z in q)and type(n)is int and n>0,'patternintegers');need((gi,tuple(q))not in seen,'duplicatepattern');seen.add((gi,tuple(q))) + used=sum(w*z for w,z in zip(v.W,q));need(used<=G[gi][0]and sum(q)<=S,'patterncapacity');xb[gi]+=n + for w,z in zip(v.W,q):xw[gi,w]+=z*n + if used0,'flowintegers');need((gi,t,w)not in seen,'duplicateflow');seen.add((gi,t,w));need(G[gi][1]FRONTIER,'must beat published T450, not merely inherited2969 comparison' + (work/'RESULT.json').write_text(json.dumps({'status':'PASS_STAGED_WIDTH_T530_COMPLETE_RELEASE','kappa':result['kappa'],'baselineT450':str(FRONTIER),'gainT450':str(Fraction(result['kappa'])-FRONTIER),'release_receipt_sha256':sha(work/'admission/release/RELEASE-RECEIPT.json'),'stages':stages},indent=2)+'\n');print('PASS_STAGED_WIDTH_T530_COMPLETE_RELEASE') +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/source_builder.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/source_builder.py new file mode 100644 index 0000000000..664fc66d18 --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/source_builder.py @@ -0,0 +1,90 @@ +# SPDX-License-Identifier: Apache-2.0 +# Source derivation with substantial OpenAI Codex assistance; inherited authors retained. +"""Private source derivation and strict driver binding. Never runs heavy admission. +Appends PR3605 to authenticated PR3133 source; preserves inherited validators. +""" +import argparse,json,gzip,hashlib,shutil,sys,importlib.util +from pathlib import Path +if not __debug__ or sys.flags.optimize: + raise RuntimeError('Assertions must be enabled for scientific replay') +P=Path(__file__).parent +OLD='fa3e2d855ac5298ecc849e596d79dcef7a72668a276b6524585bc0cd616ce474' +COMMIT='pr3605-ac92a027c78b0c9bb0ada739b26959afda489d0e' +DRIVER_PINS={'prepare_extension_native.py': '0cdb4b8b8b565e3dc4a312d4174c86d7d1aebc531430cb726658c8feb0c3bcf4', 'admit_extension.py': '6ddd449abfc2910e4c91f4ed93e14d65b84e6c1d2a082f3c089ad06f64d1d6ce'} +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p):return json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +def save(p,x):p.write_text(json.dumps(x,sort_keys=True,indent=2)+'\n') +def tree(p): + assert not any(x.is_symlink()for x in p.rglob('*')) + return {x.relative_to(p).as_posix():sha(x)for x in sorted(p.rglob('*'))if x.is_file()and x!=p/'MANIFEST.json'} +def replace(s,a,b):assert s.count(a)==1,(a,s.count(a));return s.replace(a,b) +def rank(rows): + piv={} + for x in rows: + assert type(x)is int and x>=0 + while x: + k=x.bit_length()-1 + if k not in piv:piv[k]=x;break + x^=piv[k] + return len(piv) +def main(out,src,pkg,drivers,retained_cache,retained_receipt): + global PKG + PKG=pkg + assert all(sha(drivers/n)==h for n,h in DRIVER_PINS.items()),"driver source pin" + assert not out.exists();assert sha(src/'MANIFEST.json')==OLD and tree(src)==read(src/'MANIFEST.json') + # Frozen package artifacts are independently pinned in upstream ARTIFACTS. + assert sha(PKG/'ARTIFACTS.json')=='867bd848d04505518463eb06b1905e70ccc9256bb73312d3cd1dc57623bb319b', 'frozen supplier artifact index' + assert sha(PKG/'staged_pair.py')=='25fc9b025dbb90358032013303adea650a5f19937fd3edf30b6c6fd023e2d747', 'supplier code before import' + for name,h in read(PKG/'ARTIFACTS.json').items():assert sha(PKG/name)==h + out.mkdir();dst=out/'source';shutil.copytree(src,dst);d=dst/'new/borrow';(d/'staged3605').mkdir() + shutil.copy2(PKG/'staged_pair.py',d/'staged_pair.py') + spec=importlib.util.spec_from_file_location('staged3605',PKG/'staged_pair.py');m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m) + providers=read(dst/'new/BORROW-PROVIDERS.json') + for tag,pid in [('base','gauge44'),('extra','extra')]: + q=d/f'words/BORROW-WORD-43{tag}.json.gz';parent=read(q);record=read(PKG/f'STAGED-PAIR-RECORD-{tag}.json.gz');word=read(PKG/f'STAGED644-660-{tag}.json.gz') + assert m.apply(parent,record)==word + shutil.copy2(q,d/f'inputs/PRE3605-{tag}.json.gz');shutil.copy2(PKG/f'STAGED-PAIR-RECORD-{tag}.json.gz',d/f'staged3605/RECORD-{tag}.json.gz');shutil.copy2(PKG/f'STAGED644-660-{tag}.json.gz',q) + providers[pid]['widths']=[rank(word['helper_final'].get(str(h),[1<index:warp[0]-=1 + else:wrong['B'][index][3]*=-1 + wrong['cleanup']=producer.cleanup(wrong);bad,buffers=endpoint(wrong,audit) + require(any(112<=r<224 for r in bad),'semantic target defect was not rejected') + require(not buffers,'control must retain literal clean-buffer restoration') + controls.append({'helper':helper,'defect':kind,'bad_targets':[r for r in bad if 112<=r<224]}) + out=scratch/'native' + run('transport',NATIVE/'bw_transport.py',word_path,out) + run('residual-adapters',NATIVE/'bw_adapters.py',out/'CANONICAL-WORD.json.gz',out/'RESIDUAL-ADAPTERS.json',out/'LEMMA-A.json') + for name in ('bw_emit.py','bw_audit_local.py','bw_phases.py','bw_check_recipes.py'):run(name,NATIVE/name,out) + residual=json.loads(run('changed-width-phase-controls',HERE/'check_residual.py',NATIVE)) + require(residual['status']=='PASS_EXACT_PAIRED_ENTRANCE_FULL_WIDTH7_RESIDUAL','residual controls');authenticate() + print(json.dumps({'status':'PASS_STAGED_PAIR_LOCAL_CONSTRUCTION','provider':tag,'word_sha256':sha(word_path), + 'local_profile':word['report']['local_profile'],'inventory':word['report']['width_inventory'], + 'independent_inputs':632,'private_buffers':91,'orientations':['forward','dual'], + 'controls':controls+residual['controls'],'stages':stages,'elapsed_seconds':time.monotonic()-started, + 'scope':'Finite exact local word, frame invoice and full native chain; no owner allocation or kappa claim.'},sort_keys=True)) +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/templates/prepare_extension_native.py b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/templates/prepare_extension_native.py new file mode 100644 index 0000000000..ae11fa01cc --- /dev/null +++ b/research/retimed-t488-composition/full-replay/vendor/pr3642/vendor/staged-width-t530/templates/prepare_extension_native.py @@ -0,0 +1,76 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Two fresh changed-word native chains; explicit authenticated parent reuse. +Yiyang (@Lyy-iiis), with substantial OpenAI Codex assistance. +Derived from the PR2839/PR2848 native preparation lineage, retaining validators. +""" +from pathlib import Path +from concurrent.futures import ThreadPoolExecutor +from importlib import metadata +import argparse,hashlib,json,gzip,os,platform,shutil,subprocess,sys,time +sys.dont_write_bytecode=True +SOURCE_SHA='fa3e2d855ac5298ecc849e596d79dcef7a72668a276b6524585bc0cd616ce474' +SOURCE_FILES=642 +SOURCE_COMMIT='rank7-joint-endframes-pr2917' +PARENT_SHA='e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4' +OLD_RECEIPT_SHA='f90cafe84385533a0eeb96356f385b646f402ff85cd05154c47a81c783023d9d' +def need(ok,why): + if not ok:raise ValueError(why) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b)if p.suffix=='.gz'else b) +def write(p,v):p.write_text(json.dumps(v,sort_keys=True,indent=2)+'\n') +def tree(p,exclude=()): + out={} + for f in sorted(p.rglob('*')): + need(not f.is_symlink(),'no cache/source symlinks') + if f.is_file()and f.relative_to(p).as_posix()not in exclude:out[f.relative_to(p).as_posix()]=sha(f) + return out + +def main(): + ap=argparse.ArgumentParser() + for n in ['source','retained-cache','retained-receipt','out']:ap.add_argument('--'+n,type=Path,required=True) + ap.add_argument('--jobs',type=int,default=2);a=ap.parse_args();source=a.source.resolve();out=a.out.resolve();oldcache=a.retained_cache.resolve() + need(not sys.flags.optimize and 1<=a.jobs<=2,'assertions enabled and max2 jobs') + need(sha(source/'MANIFEST.json')==SOURCE_SHA and len(read(source/'MANIFEST.json'))==SOURCE_FILES and tree(source,('MANIFEST.json',))==read(source/'MANIFEST.json'),'complete immutable derived source') + need(not list(source.rglob('__pycache__'))and not list(source.rglob('*.pyc')),'source free of bytecode and cache folders') + before=tree(source);oldreceipt=read(a.retained_receipt) + need(sha(a.retained_receipt)==OLD_RECEIPT_SHA and tree(oldcache)==oldreceipt['cache_files'],'complete PR2848 retained native/cache evidence') + old=source/'vendor/pr1297';need(sha(old/'MANIFEST.json')==PARENT_SHA and tree(old,('MANIFEST.json',))==read(old/'MANIFEST.json'),'unchanged retained source') + prdir=oldcache/'_receipts'/PARENT_SHA;need(sha(prdir/'RECEIPT.json')==oldreceipt['retained_parent_receipt_sha256'],'retained parent receipt identity');pr=read(prdir/'RECEIPT.json') + need(pr['vendor_manifest_sha256']==PARENT_SHA and pr['claim_sha256']==sha(old/'CLAIM.json'),'retained parent source claim') + for name,h in pr['files'].items():need(sha(prdir/name)==h,'retained parent result binding') + need(read(prdir/'RESULT.json')['status']=='PASS_GLOBAL_MIXED_X54_FUSIONS_NATIVE_AND_STRICT_ADMISSION' and read(prdir/'RESULT.json')['kappa']==read(old/'CLAIM.json')['kappa'],'retained full parent admission') + pstages=read(prdir/'STAGES.json');need(len(pstages)==16 and all(s['exit_code']==0 for s in pstages),'all16 retained parent stages') + need(not out.exists()and not out.is_relative_to(source)and not out.is_relative_to(oldcache),'fresh external native work');out.mkdir(parents=True);cache=out/'native-cache';cache.mkdir() + steps=['native','ledgers','local-replay','wrappers','phases'] + for tag,name in [('base','gauge44-word.json.gz'),('extra','extra-word.json.gz')]: + word=old/name;key=sha(word);need(pr['words'][tag]==key,'retained word hash');entry=oldcache/key + need(read(entry/'local/FULL-WORD.json.gz')==read(word),'retained complete literal word');st=read(entry/'STEPS.json');need([s['step']for s in st]==steps and all(s['exit_code']==0 for s in st),'retained native five stages') + cj=read(entry/'CACHE.json');need(cj['word_sha256']==key and cj['files']==tree(entry,('CACHE.json',)),'retained full native files') + shutil.copytree(entry,cache/key) + shutil.copytree(prdir,cache/'_receipts'/PARENT_SHA) + versions={} + for name in ['numpy','scipy','sympy','mpmath','psutil','gmpy2']: + try:versions[name]=metadata.version(name) + except metadata.PackageNotFoundError:versions[name]=None + write(out/'ENVIRONMENT.json',dict(python=platform.python_version(),executable=sys.executable,dependency_versions=versions,assertions_enabled=True)) + env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONUTF8='1',PYTHONINTMAXSTRDIGITS='0',OPENBLAS_NUM_THREADS='1',OMP_NUM_THREADS='1') + for k in ['PYTHONOPTIMIZE','WITNESS_SPEC','WITNESS_DISCOVER','WITNESS_RECORD']:env.pop(k,None) + driver=source/'new/fastnative/run_native.py';start=time.monotonic();stages=[];words={t:source/('new/borrow/words/BORROW-WORD-43'+t+'.json.gz')for t in ['base','extra']} + def fresh(tag): + word=words[tag];work=out/('fresh-'+tag);cmd=[sys.executable,'-B',str(driver),str(word),str(work)];log=out/('native-'+tag+'.log');begin=time.monotonic() + with log.open('w')as f:r=subprocess.run(cmd,cwd=out,env=env,stdin=subprocess.DEVNULL,stdout=f,stderr=subprocess.STDOUT) + need(r.returncode==0,'fresh native '+tag+' failed; '+str(log));res=read(work/'RESULT.json');need(res['status']=='PASS_COMPLETE_T74_NATIVE_REPLAY'and res['word_sha256']==sha(word),'fresh native result') + entry=cache/sha(word);shutil.copytree(work/'native',entry);need(read(entry/'local/FULL-WORD.json.gz')==read(word),'fresh complete literal word') + st=read(entry/'STEPS.json');need([s['step']for s in st]==steps and all(s['exit_code']==0 for s in st),'fresh native five stages') + checks=read(entry/'local/LOCAL-CHECKS.json');can=read(entry/'local/CANONICAL-WORD.json.gz') + need(can['R']==408 and len(can['centers'])==8 and len(can['zero_buffers'])==91,'complete physical ABI') + for orientation in ['forward','backward']:need(checks[orientation]['all_columns']==632 and checks[orientation]['paid_profile']==read(word)['report']['local_profile'],'actual all-column native profile') + write(entry/'CACHE.json',dict(word_sha256=sha(word),files=tree(entry))) + rec=dict(name='fresh-current-'+tag,exit_code=0,command=cmd,script_sha256=sha(driver),log_sha256=sha(log),result_sha256=sha(work/'RESULT.json'),seconds=time.monotonic()-begin);print('PASS',rec['name'],flush=True);return rec + with ThreadPoolExecutor(max_workers=a.jobs)as pool:stages=list(pool.map(fresh,['base','extra'])) + need(tree(source)==before and tree(oldcache)==oldreceipt['cache_files']and sha(a.retained_receipt)==OLD_RECEIPT_SHA,'read-only input drift') + rec=dict(status='PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE',source_commit=SOURCE_COMMIT,manifest_sha256=SOURCE_SHA,providers={t:dict(word_sha256=sha(w),complete_native_files=tree(cache/sha(w),('CACHE.json',)))for t,w in words.items()},retained_parent_receipt_sha256=sha(cache/'_receipts'/PARENT_SHA/'RECEIPT.json'),cache_files=tree(cache),fresh_current_provider_count=2,fresh_retained_native_count=0,reused_retained_native_count=2,fresh_retained_parent=False,reused_retained_parent=True,retained_reuse_receipt_sha256=OLD_RECEIPT_SHA) + write(out/'NATIVE-RECEIPT.json',rec);write(out/'STAGES.json',stages);write(out/'RESULT.json',dict(status='PASS_TWO_FRESH_SHARED_KERNEL_NATIVE_CHAINS_AUTHENTICATED_PARENT_REUSE',source_manifest_sha256=SOURCE_SHA,native_receipt_sha256=sha(out/'NATIVE-RECEIPT.json'),preparer_sha256=sha(Path(__file__)),environment_sha256=sha(out/'ENVIRONMENT.json'),stages=stages,seconds=time.monotonic()-start,scope='Fresh changed base/extra native chains; two unchanged retained native chains and16-stage parent admission explicitly reused by exact full-tree receipts. No owner/controller/outer admission yet.')) + print('PASS_TWO_FRESH_SHARED_KERNEL_NATIVE_CHAINS_AUTHENTICATED_PARENT_REUSE',flush=True) +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/local-audit/LICENSE b/research/retimed-t488-composition/local-audit/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/retimed-t488-composition/local-audit/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/retimed-t488-composition/local-audit/MANIFEST.json b/research/retimed-t488-composition/local-audit/MANIFEST.json new file mode 100644 index 0000000000..81e579131c --- /dev/null +++ b/research/retimed-t488-composition/local-audit/MANIFEST.json @@ -0,0 +1,34 @@ +{ + "schema_version": 1, + "sha256": { + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NATIVE-LINEAGE-NOTICE": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420", + "PUBLIC-INPUTS.json": "e0fae1c1a7aa365acd4b1815f74bd6d588d7829a385f62136cf99ba3dbb9c412", + "README.md": "5882a6746c61aecbd6ad65dc216082506b86465f3a0c3a036ba48aba2f05d1f5", + "SOURCE-PINS.json": "782e6600e68efdb8b753e965f9e0ed87b7ac213b674ce09db14d7f6437edc3ca", + "check_retiming_independent.py": "1d57113431ec7615fc7e3e876b11ea97ee29af21402f9081d44feeb1dff5d541", + "check_retiming_negative.py": "f1d8737aba2fa0ca2fe21eb5454c8e065aa77023826df54d7397bcb83c4e758d", + "receipts/native-base/COMMANDS.json": "f50dabd902fc59059482c7c5ebd7931e8ec1e35137b070ac85f5a3df813fcdef", + "receipts/native-base/RESULT.json": "24a078ef87248b8c590cc9a64d00956d8275098f7109ea70e4952028e15ff5e7", + "receipts/native-base/native/local/INDEPENDENT-LOCAL-REPLAY.json": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458", + "receipts/native-base/native/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "receipts/native-base/native/local/SCALAR-FRAME-AUDIT.json": "21ce6befe785a2143146121457fe394c0d7a1140118b600e6508d2b7ae0ec192", + "receipts/native-base/native/local/WARP-RECIPE-CHECKS.json": "8a0b738edc8ef4c428346e55d74bca08313df104a61b21dbbfcf9dd82c863079", + "receipts/native-base/native/local/WRAPPER-CHECKS.json": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485", + "receipts/native-extra/COMMANDS.json": "087c701235d3fd702b4d928f43240ca7e792473609cb2cf4e0a8c46223624b47", + "receipts/native-extra/RESULT.json": "d5f100c155e13d8360e016c32efd66df0bfadd0fa52bcb3a1f2b1f9cf9e22b9c", + "receipts/native-extra/native/local/INDEPENDENT-LOCAL-REPLAY.json": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037", + "receipts/native-extra/native/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "receipts/native-extra/native/local/SCALAR-FRAME-AUDIT.json": "60fb2027dffde335e62c1fb6fe8d51a9432b70478224fcbbfa0bfe3b7ade4b69", + "receipts/native-extra/native/local/WARP-RECIPE-CHECKS.json": "cb7e8b1d35dc677737ee514f39b96d7d25e0d5d2b0c1d6a6bcafb4c23c91902d", + "receipts/native-extra/native/local/WRAPPER-CHECKS.json": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485", + "vendor/SOURCE-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "vendor/SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "vendor/audit_local.py": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90", + "verify.py": "8ed59af3f942cbe2e469434954f74b0d6fedd7b99f09efc2b60e64c2e5a030a7", + "words/RETIMED644-660-base.json.gz": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "words/RETIMED644-660-extra.json.gz": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "words/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "words/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + } +} diff --git a/research/retimed-t488-composition/local-audit/NATIVE-LINEAGE-NOTICE b/research/retimed-t488-composition/local-audit/NATIVE-LINEAGE-NOTICE new file mode 100644 index 0000000000..380e979f0e --- /dev/null +++ b/research/retimed-t488-composition/local-audit/NATIVE-LINEAGE-NOTICE @@ -0,0 +1,14 @@ +Anticipatory dirty borrowing: PR2226 (Cinna Davis / 1337isnot1337, with substantial OpenAI Codex assistance) is credited first. Its alias rule, changed-reference K_G handoffs, initial compensation and exact free-operator replay (vendored under new/code/borrow/vendor, see new/code/borrow/NOTICE-PR2226.md) are applied here to the T74 pivot-566+554 words; the native lowering, window-exact owner fill and independent audit of the borrow words are new in this package. Bootstrap carried-cutoff repair: PR1956 (Josie Elliston); Lemma G label/adapter checks and X/Y/Z mutants: PR1964 (thakrarsagar), extended here with borrow warp/zero-buffer controls. + +New research prepared by Rohan Arun with substantial OpenAI Codex assistance. Apache-2.0. Parent words and build recipe method derive from Jeremy Kothe PR1274 and Rohan Arun PR1218, with lineage credited in README.md. All inherited mathematical qualifications are retained. +Additional pivot555 and567 composition by Rohan Arun with substantial OpenAI Codex assistance. + +T74 exact-fill owner construction by Rohan Arun with substantial OpenAI Codex assistance. + +PR1377 grid refinement credited to Jeremy Kothe. Outer witness refinement by Rohan Arun with OpenAI Codex assistance; construction unchanged. + +Pivot-566 kernel, words, edits, rebuild.py and rebind.py: PR1625 (mdumitrean). Endpoint/outer-witness stacking, fine_cache.py and oracle stage by jeremykothe2 with oh-my-pi assistance. + +The preceding paragraphs are inherited source notices, not attribution of this derivative. +This joint twelve-source construction, generator, independent replay, hosting composition and package: Tekalign (@tekuuu), with substantial OpenAI Codex assistance. No independent human review claimed. +Credits: Cinna Davis/PR2226 anticipatory dirty borrowing; Tekalign/PR2436 four lifted targets; Jeremy Kothe/PR2462,2588,2673 source pipeline, source-label swap and order/fill; zxv/PR2530 eight aliases; Mason Hale/PR2696 concentrated source-partner assignment and independent local interpreter; Philippe Van Velzen/PR2559,2679 evacuation, six pre-life hosts and refit/alias; themilkman216/PR2621 priority order; Marius-Paul Dumitrean/PR2733 independent concentrated/pre-life composition; Vlado Vojdanovski/PR2322 generator utilities. PR2720's fixed-old-path cut obstruction motivates the changed premise. The retained owner/native/bit/modern outer lineage and their notices remain in the pinned source. New work Apache-2.0. diff --git a/research/retimed-t488-composition/local-audit/PUBLIC-INPUTS.json b/research/retimed-t488-composition/local-audit/PUBLIC-INPUTS.json new file mode 100644 index 0000000000..6b5c686577 --- /dev/null +++ b/research/retimed-t488-composition/local-audit/PUBLIC-INPUTS.json @@ -0,0 +1,5 @@ +{ + "schema_version": 1, + "repository_inputs": [], + "dependency_scope": "Self-contained package-local exact scientific inputs and retained source copies. Python standard library only. No network or external repository bytes are read by the registered direct verifier." +} diff --git a/research/retimed-t488-composition/local-audit/PUBLICATION-PROVENANCE.json b/research/retimed-t488-composition/local-audit/PUBLICATION-PROVENANCE.json new file mode 100644 index 0000000000..a2105b48d3 --- /dev/null +++ b/research/retimed-t488-composition/local-audit/PUBLICATION-PROVENANCE.json @@ -0,0 +1,54 @@ +{ + "schema_version": 1, + "source_capsule": "kappa-release-retiming/local-audit", + "scope": "Explicit publication adapter. Original frozen research capsule left unchanged. Original SHA256 identify private original bytes; public SHA256 identify the adapted files and do not assert original-byte identity. No full native/controller/outer scientific pipeline rerun is implied by publication.", + "path_alias": "$RESEARCH_WORKSPACE replaces this session's private task-workspace or user-root prefix in historical command metadata. It is an informational alias, not an executable path.", + "byte_identical_copied_file_count": 22, + "changed_files": [ + { + "path": "MANIFEST.json", + "original_sha256": "58c75d3dff037b3c70e338f142e306aedfd9657f3eb7172af0a937771b76fe3f", + "public_sha256": "8b39c1608513db2811ea25fecdfc24e7b593c5a4a37ab0e52b70d2af3c009917", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "README.md", + "original_sha256": "fddb1d3172961310785e25afed89fea80fe55f7b7bf7cbe92086d5d81e5816de", + "public_sha256": "5882a6746c61aecbd6ad65dc216082506b86465f3a0c3a036ba48aba2f05d1f5", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "check_retiming_independent.py", + "original_sha256": "8cbcf940d4bad813a372244c22391b1a3d562db7a923e40767cb2070a1458a42", + "public_sha256": "1d57113431ec7615fc7e3e876b11ea97ee29af21402f9081d44feeb1dff5d541", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "check_retiming_negative.py", + "original_sha256": "60a51e2e99e567ab5a9e5a19d7d5f965c68760b348ebf5c3b4257cf31dcb68d8", + "public_sha256": "f1d8737aba2fa0ca2fe21eb5454c8e065aa77023826df54d7397bcb83c4e758d", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "receipts/native-base/COMMANDS.json", + "original_sha256": "23e51cd91cb01db7e8913ed001bf8225d2aac2c378311e183941289243403c5e", + "public_sha256": "f50dabd902fc59059482c7c5ebd7931e8ec1e35137b070ac85f5a3df813fcdef", + "transformation": "Only private user/workspace path prefixes replaced with $RESEARCH_WORKSPACE. Original execution command bytes are preserved in the non-public capsule; this file is an explicitly normalized publication derivative." + }, + { + "path": "receipts/native-extra/COMMANDS.json", + "original_sha256": "7b9954b5004d62d564274e5ca3e1cbc22bab53416cca60da7edce62c6052757a", + "public_sha256": "087c701235d3fd702b4d928f43240ca7e792473609cb2cf4e0a8c46223624b47", + "transformation": "Only private user/workspace path prefixes replaced with $RESEARCH_WORKSPACE. Original execution command bytes are preserved in the non-public capsule; this file is an explicitly normalized publication derivative." + }, + { + "path": "verify.py", + "original_sha256": "e91ccf3218e0656aba5890aea009b353c191a101d4628a28fdb30c680880eb43", + "public_sha256": "8ed59af3f942cbe2e469434954f74b0d6fedd7b99f09efc2b60e64c2e5a030a7", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + } + ], + "omitted_generated_material": [ + "results/: regenerable local proof receipts, negative-control words and logs; generated afresh outside the package by verify.py" + ] +} diff --git a/research/retimed-t488-composition/local-audit/README.md b/research/retimed-t488-composition/local-audit/README.md new file mode 100644 index 0000000000..797e3186bc --- /dev/null +++ b/research/retimed-t488-composition/local-audit/README.md @@ -0,0 +1,73 @@ +# Independent local audit of the two release retimings + +Run from this directory, or invoke `verify.py` by its absolute path from anywhere: + +```sh +python3 -B verify.py +``` + +Python 3.10 or later and the standard library suffice. No network, repository checkout or third-party packages are needed. All input paths are relative to `__file__`; output is written to a fresh temporary directory, or the external directory supplied with `--out /fresh/output`. The expected final line is `PASS_PORTABLE_LOCAL_RETIMING_AUDIT`. + +The verifier authenticates all packaged inputs, runs the separately written minimal scalar/frame proof, freshly replays both complete free-operator words on all 632 arbitrary input columns in both orientations, checks all 91 private zero buffers, and exercises four semantic rejection controls. It also authenticates retained receipts of two complete native replays performed during this research session. The full native implementation is not bundled or rerun by this command. + +## Exact change and proof + +Parent words: [PR3605](https://github.com/CrocSwap/integer-mult-bounds/pull/3605), pinned at `3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`. In both variants, only B, cleanup and `report.local_profile` change. + +At zero-based B indices 591–592, replace + +```text +640 += 2 * 644 at P +496 -= 2 * 644 at P +``` + +with + +```text +496 -= 2 * 644 at P +640 += 2 * 644 at Q +``` + +Here `P = span(429,30)` and `Q = span(423,65,20,10)`. At indices 641–642, similarly exchange `656 -= 660` and `520 -= 2*660`, raising the delayed first gate to `Q' = span(427,96,24,6)`. + +Each pair contains two rational elementary shears with the same source and different targets. The shears commute exactly. No warp intervenes, and none of the six involved registers has a warp. The delayed donor originally traverses the nested frames `span(30) < P < Q`, of dimensions 1, 2, 4; Q is already the next frame used by donor and pivot. Retiming allows a direct donor jump from dimension 1 to dimension 4. The same argument applies to Q'. Cleanup follows canonical inverse-reverse order at FULL. + +Each block replaces `H₁ + H₂` with `H₃`. The total delta is `−2H₁ − 2H₂ + 2H₃`, yielding profile `{1:2437,2:724,3:226,4:102,5:20,8:8}`. For every `0 < a < 1`, `3^(1−a) < 2^(1−a) + 1`, so the recursive moment strictly decreases. This is a structural improvement, rather than decimal rounding. Rank mass remains 5135. Helper identities, entrance/final frames, interfaces, 408 live helpers, 91 private zero buffers and width inventory `{4:26,5:2,6:18,7:52,8:97,9:213}` all remain unchanged. + +## Native evidence and scope + +`receipts/native-{base,extra}/RESULT.json` records two fresh successful five-stage native runs: native, ledgers, local replay, wrappers and phases, including the separate warp-recipe checker. Their independent replay reports cover all 632 live columns, all 91 zero buffers and all 512 warp columns in both orientations. Exact local prefix bounds are: + +| Orientation | Bound | Bits | +| --- | --- | ---: | +| Forward | `202390250292205836324211411723 / 512` | 89 | +| Backward | `4091250694836343058381993950001 / 128` | 95 | + +Both lie below the inherited 128-bit local reserve and 192-bit charged payload. Native events decrease from 22768 to 22766; scalar macros and primitive counts remain unchanged. Public `COMMANDS.json` files replace this session's private user/workspace prefixes with `$RESEARCH_WORKSPACE`. They are publication derivatives, not the original command bytes. `PUBLICATION-PROVENANCE.json` records the original and public SHA256 for every changed copied file. Scientific native result, source and local replay receipts remain byte-identical. The portable verifier does not execute historical commands. + +To rerun the full native implementation, obtain repository commit `20ecf2891d80b5acf18d980b2164fb44ea7faa90`, use Python 3.12 with NumPy, and substitute actual checkout/capsule paths below. Each destination must not already exist: + +```sh +python3 -B /path/to/repository/research/t74-native-fast/run_native.py /path/to/local-audit/words/RETIMED644-660-base.json.gz /path/to/fresh-native-base +python3 -B /path/to/repository/research/t74-native-fast/run_native.py /path/to/local-audit/words/RETIMED644-660-extra.json.gz /path/to/fresh-native-extra +``` + +The driver SHA is in `SOURCE-PINS.json`; each native result retains its full native source manifest. These independent local native runs used Python 3.12.14 and NumPy 2.3.5. The separate integrated admission used Python 3.12.14 and NumPy 2.5.4. + +This capsule proves the local replacement and its strict moment reduction. It does not rerun the global owner/controller/physical/outer release or establish an unconditional integer-multiplication bound. A higher κ still requires source-bound assembly and transfer checks and the source's declared theorem hypotheses. Pending source claims are not promoted here to the repository's selected reviewed baseline. + +## Negative controls + +The inherited checker rejects: (1) raising the first gate while retaining old order, at frame monotonicity; (2) omitting the frame jump while claiming the new invoice, at paid profile; (3) coefficient 2 to 3 with a consistent inverse, at target map; (4) old literal cleanup, at canonical inverse-reverse ordering. The fourth is structural: the old inverse shears also commute, so their old order remains operator-equivalent. + +Mutation words, logs and JSON results are generated under `/negative/`. The minimal proof additionally rejects coefficient, frame and interface mutations. + +## Provenance and license + +The staged suppliers are Ross Richardson's PR3605 contribution, based on dcharb78's PR3133 lineage. The commuting retiming was found by the joint-circuit agent in this session; the minimal proof and packaging were written separately by the fresh-math review agent. No priority is claimed over predecessor suppliers or their mathematics. + +`vendor/audit_local.py` is an unchanged SHA-pinned copy of `research/rank7-coupled-586-588-carrier-fold/vendor/audit_local.py` at the repository commit above; its notice credits icekylinx with OpenAI GPT-6 Astra assistance. The reused native implementation is credited in `NATIVE-LINEAGE-NOTICE`. Inherited notices and credits remain in `vendor/SOURCE-NOTICE` and `vendor/SOURCE-CREDITS.md`. The retained source and this derivative capsule are Apache-2.0 licensed; see `LICENSE`. + +## Publication adapter + +This directory is a public derivative of the preserved local capsule. Only execution-path metadata, output routing and publication documentation were adapted; source words and inherited checkers remain unchanged. No full native replay was repeated by this adapter. The default command writes outside the package; an explicit `--out` must name a new directory outside it. There are no external repository inputs; see `PUBLIC-INPUTS.json`. diff --git a/research/retimed-t488-composition/local-audit/SOURCE-PINS.json b/research/retimed-t488-composition/local-audit/SOURCE-PINS.json new file mode 100644 index 0000000000..6a5b0d0219 --- /dev/null +++ b/research/retimed-t488-composition/local-audit/SOURCE-PINS.json @@ -0,0 +1,15 @@ +{ + "repository": "https://github.com/CrocSwap/integer-mult-bounds", + "main_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "staged_supplier_pr": 3605, + "staged_supplier_commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "independent_checker": { + "path": "research/rank7-coupled-586-588-carrier-fold/vendor/audit_local.py", + "sha256": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90" + }, + "native_driver": { + "path": "research/t74-native-fast/run_native.py", + "sha256": "a7bfe110fe5098f6ef8bde3c43ecf15e8d1e06149abf7321a4c945383dcc2627" + }, + "description": "Local research derivative of the pinned staged suppliers: two commuting scalar-release retimings. Pending source claims and inherited theorem hypotheses remain conditional." +} diff --git a/research/retimed-t488-composition/local-audit/check_retiming_independent.py b/research/retimed-t488-composition/local-audit/check_retiming_independent.py new file mode 100644 index 0000000000..9016f3aa14 --- /dev/null +++ b/research/retimed-t488-composition/local-audit/check_retiming_independent.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python3 +"""Independent minimal-delta check for the two release reorderings. + +Standard library only. Does not import the search, builder or frame optimizer. +The native receipts are separately freshly produced by the unchanged credited +t74-native-fast verifier; this script binds their exact input and outputs. +""" +from collections import Counter +from copy import deepcopy +from fractions import Fraction +from pathlib import Path +import argparse +import tempfile +import gzip +import hashlib +import json + +HERE=Path(__file__).resolve().parent +WORDS=HERE/'words' +SOURCE={ + 'base':'735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653', + 'extra':'886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f'} +FULL=[256,128,64,32,16,8,4,2,1] + +def need(ok,why): + if not ok:raise ValueError(why) + +def sha(path):return hashlib.sha256(path.read_bytes()).hexdigest() + +def read(path):return json.loads(gzip.decompress(path.read_bytes()) if path.suffix=='.gz' else path.read_bytes()) + +def span(vectors): + out={0} + for v in vectors:out|={u^v for u in out} + return out + +def gate_product(gates, registers): + rows={r:{r:Fraction(1)} for r in registers} + for g in gates: + need(g[0]=='add' and g[1]!=g[2],'not an elementary shear') + target,source=g[1:3] + for k,v in list(rows[source].items()): + rows[target][k]=rows[target].get(k,Fraction(0))+Fraction(g[3],g[4])*v + if rows[target][k]==0:del rows[target][k] + return rows + +def local_check(old,new): + need(set(old)==set(new),'top-level schema changed') + need([k for k in old if old[k]!=new[k]]==['B','cleanup','report'],'unexpected changed fields') + expected=deepcopy(old) + blocks=[] + for index,donor,pivot,other,frame in ( + (591,640,644,496,[423,65,20,10]), + (641,656,660,520,[427,96,24,6])): + before=old['B'][index:index+2] + after=new['B'][index:index+2] + need(before[0][1:3]==[donor,pivot] and before[1][1:3]==[other,pivot],'wrong source shears') + need(before[0][-1]==before[1][-1]==[429,30],'wrong source frames') + need(after==[before[1],before[0][:-1]+[frame]],'not the literal commuting reordering') + need(all(rec[0]!=index+1 for rec in old['warps']),'warp crossed between shears') + need(not any(rec[1] in (donor,pivot,other) for rec in old['warps']),'changed-register warp') + need(gate_product(before,[donor,pivot,other])==gate_product(after,[donor,pivot,other]),'operator mismatch') + need(span([30]) 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. diff --git a/research/retimed-t488-composition/local-audit/vendor/SOURCE-NOTICE b/research/retimed-t488-composition/local-audit/vendor/SOURCE-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/retimed-t488-composition/local-audit/vendor/SOURCE-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/retimed-t488-composition/local-audit/vendor/audit_local.py b/research/retimed-t488-composition/local-audit/vendor/audit_local.py new file mode 100644 index 0000000000..8224873d04 --- /dev/null +++ b/research/retimed-t488-composition/local-audit/vendor/audit_local.py @@ -0,0 +1,501 @@ +"""Independent exact scalar/frame audit of the changed forward supplier. + +This does not import a generator, builder, stored compensation, or price. +All claimed endpoint matrices are derived from the input word's gates. +Optional --main checks the transported boundary against the pinned parent. +Prepared for icekylinx with OpenAI GPT-6 Astra assistance. Apache-2.0. +""" +import argparse,gzip,json,hashlib,time +from pathlib import Path +from fractions import Fraction as F +from collections import Counter + +def require(x,label): + if not x:raise RuntimeError(label) + +def basis(vs): + piv={} + for a in vs: + while a: + bit=a.bit_length()-1 + if bit in piv:a^=piv[bit] + else: + piv[bit]=a;break + for k in sorted(piv): + for j in piv: + if j>k and piv[j]>>k&1:piv[j]^=piv[k] + return tuple(piv[k] for k in sorted(piv,reverse=True)) + +def contained(a,b):return basis(a+b)==b + +def registers(e):return e[1:3] if e[0]=='add' else e[1:2] + +def apply(e,rows,dual=False): + if e[0]=='add': + t,s=e[1:3];q=F(e[3],e[4]);require(t!=s,'self add') + if dual:t,s,q=s,t,-q + dst=rows[t] + for k,x in list(rows[s].items()): + a=dst.get(k,F(0))+q*x + if a:dst[k]=a + else:dst.pop(k,None) + elif e[0]=='scale': + t=e[1];q=F(e[2],e[3]);require(q!=0,'zero scale') + if dual:q=1/q + rows[t]={k:q*x for k,x in rows[t].items()} + else:raise RuntimeError('unknown scalar primitive') + +def invert(e): + r=list(e) + if r[0]=='add':r[3]=-r[3] + else:r[2],r[3]=r[3],r[2] + return r + +def check_parent_interface(word,main): + # Read only the retained boundary data. No builder or local checker is imported. + relative="research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CANONICAL-WORD.json.gz" + path=main/relative;raw=path.read_bytes() + require(hashlib.sha256(raw).hexdigest()=="66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844",'parent canonical input pin') + parent=json.loads(gzip.decompress(raw)) + tau=lambda x:x^(43 if (x&43).bit_count()%2 else 0) + ports=parent['ports'];v=word['report']['v'] + require(len(ports)==len(set(ports))==v,'parent port count') + require(set(map(tau,word['ports']))==set(ports),'transported source/target ports') + moved={i:ports.index(tau(p)) for i,p in enumerate(word['ports'])} + centers=[moved.get(r,r) for r in word['centers']] + actual=[list(basis([tau(x) for x in frame])) for frame in word['center_frames']] + expected=[parent['frames'][f] for f in parent['center_frames']] + require(len(centers)==len(set(centers))==len(actual)==8,'eight distinct centre carriers') + require(actual==expected and all(len(f)==8 for f in actual),'ordered centre frame interface') + return dict(parent_path=relative,parent_file_sha256=hashlib.sha256(raw).hexdigest(), + transport_tau=43,ordered_frame_bases_match=True,all_ports_match=True, + transported_centers=centers,source_centers=[r for r in centers if r=2*v} + for e in w['precondition']:apply(e,dirt) + compensation=[['add',y,k,-a.numerator,a.denominator,[]] for y in range(v,2*v) for k,a in sorted(dirt[y].items())] + entering=set(map(int,w.get('start_extra',{})));lowends=set(map(int,w.get('helper_final',{}))) + coldends=lowends-entering + require(not any(e[2] in entering for e in compensation),'nonzero entrance response') + require(not any(r in entering|coldends for e in w['precondition']+compensation for r in registers(e)), 'pre-wrapper touch of residual helper') + require(all(e[-1]==[] for e in w['precondition']+compensation),'nonzero frame precondition') + early=w.get('early_cleanup',[]);earlyids={i for i,U in early} + require(len(earlyids)==len(early),'duplicate early cleanup gate') + tail=[w['cleanup'][i][:-1]+[U] for i,U in early] + cleanup=[e for i,e in enumerate(w['cleanup']) if i not in earlyids] + prefix=w['precondition']+compensation+main + program=prefix+tail+cleanup + for dual in (False,True): + actual=ident() + for e in program:apply(e,actual,dual) + expected=ident() + for t in range(v):expected[t if dual else v+t][v+t if dual else t]=F(-1 if dual else 1) + bad=[i for i in range(n) if actual[i]!=expected[i]] + require(not bad,'all-column endpoint failure '+str((dual,bad[:8]))) + print('endpoint', 'dual' if dual else 'forward','PASS',flush=True) + full=basis([1<>=1;i+=1 + return y + +def ginv(cols,h): + # inverse columns over F2 (None if singular), Gauss-Jordan on (G | I) column-wise + piv={}; + for i in range(h): + a=cols[i];b=1<>s&1:a^=piv[s][0];b^=piv[s][1] + if a:return None + pre.append(b) + return pre # pre[t] = G^{-1}(e_t) + +def gtrans(cols,h): + # transpose: column j of G^T = row j of G + return [sum(((cols[i]>>j)&1)< E (used for B-phase warps and for A-phase prelude warps)""" + inv=ginv(cols,h);require(inv is not None,'G not invertible') + require(all(gmul(cols,inv[t])==1<(Gx, (G+G^-T)x + G^-T z) + GiT=gtrans(inv,h) # G^{-T}: columns j = row j of G^{-1} + # G^{-T}(z): via columns GiT + def M(vec): + x=vec&((1<>h + gx=gmul(cols,x);S=gx^gmul(GiT,x) # (G + G^{-T}) x + return gx|((S^gmul(GiT,z))<>h)|((vec&((1<0)-(op<0))*(abs(op)+dsym)) + walg_add(rows[src],row,-c) + return + if e[0]=='warp': + op=e[2];s=(op>0)-(op<0) + if dual:op=s*(abs(op)+dsym) # dual orientation: K_G^{-T} is a distinct free symbol + rows[e[1]]=walg_warp(rows[e[1]],op);return + if e[0]=='add': + t,s=e[1:3];q=F(e[3],e[4]);require(t!=s,'self add') + if dual:t,s,q=s,t,-q + walg_add(rows[t],rows[s],q) + else: + t=e[1];q=F(e[2],e[3]);require(q!=0,'zero scale') + if dual:q=1/q + rows[t]={k:q*x for k,x in rows[t].items()} + +def invert_item(e,full): + if e[0]=='warp':return ['warp',e[1],-e[2]] + r=list(e) + if r[0]=='add':r[3]=-r[3] + else:r[2],r[3]=r[3],r[2] + return r + +def run_borrow(path,out,main,base,w,data,begin): + v,h,R=w['report']['v'],w['report']['h'],w['report']['R'];n=2*v+R + require((v,h)==(112,9),'wrong source geometry') + require(main is None,'--main parent interface is not available for coordinate-changed BORROW-WORD; use --base') + full=basis([1<=2*v,'correction source must be a remaining helper') + require(s not in entering,'correction source has nonzero entrance frame') + require(len(word)>=1 and all(1<=abs(o)<=K for o in word),'correction operator word') + require(c!=0 and c.denominator&(c.denominator-1)==0,'correction coefficient') + # the source is the lender of the operator it is read through + require(all(warps[abs(o)-1][1]==s for o in word),'correction source is not the lender of its operator') + # --- 4. frames: literal chain, monotone, paid profile --------------------------------------- + end=[full]*v+[basis([x for x in range(1,1<0 else list(to_),list(to_) if op_>0 else list(fr_),h) + require(cur[r_]==basis(fr_),'prelude warp frame mismatch '+str((r_,op_))) + cur[r_]=basis(to_) + else: + for q in registers(e):climb(q,e[-1]) + for e in Aord: + for q in registers(e):climb(q,e[-1]) + lev={int(t):basis(U) for t,U in w.get('target_levels',{}).items()} + require(all(cur[v+t]==lev.get(t,()) for t in range(v)),'target centre levels') + for q,U in zip(w['centers'],w['center_frames']): + U=basis(U);require(cur[q]==U,'center frame') + served={lev.get(e[1]-v,()) for e in w['cut'] if e[2]==q} + for T in sorted(served,key=lambda x:-len(x)): + require(contained(T,U),'center path not nested') + if T!=U:paid[len(U)-len(T)]+=1 + U=T + byposition={} + for op,rec in enumerate(warps,1):byposition.setdefault(rec[0],[]).append(op) + B=w['B'];forward=[] # chronological program of the (recorded) non-target word + for e in Aord:forward.append(e) + for p in range(len(B)+1): + for op in byposition.get(p,[]): + _,lender,cols,U,E=warps[op-1] + require(cur[lender]==basis(U),'warp frame mismatch '+str((op,lender,cur[lender],basis(U)))) + cur[lender]=basis(E);forward.append(['warp',lender,op]) + if p= 0, 'nonnegative exact integer count required') + result[rank] = count + return {rank: count for rank, count in sorted(result.items()) if count} + +def authenticate(): + provenance = read(HERE / 'PROVENANCE.json') + for item in provenance['files']: + path = HERE / item['local_path'] + need(sha(path) == item['sha256'], 'source SHA256 mismatch: ' + item['local_path']) + if 'git_blob' in item: + raw = path.read_bytes() + git_blob = hashlib.sha1(b'blob ' + str(len(raw)).encode() + b'\0' + raw).hexdigest() + need(git_blob == item['git_blob'], 'Git blob mismatch: ' + item['local_path']) + return provenance + +def load_engine(name, path): + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + +def derive_inputs(): + """Authenticate sources and derive the candidate histogram from actual bills.""" + provenance = authenticate() + owner = read(HERE / 'inputs/OWNER-EXPECTED.json') + replay = read(HERE / 'inputs/OWNER-PORTABLE-REPLAY.json') + arithmetic = read(HERE / 'inputs/OLD-ARITHMETIC.json') + old = profile_dict(read(HERE / 'inputs/OWNER-PROFILE.json')) + need(old == profile_dict(owner['profile']) == profile_dict(arithmetic['profile']) == + profile_dict(replay['primal']['profile']), 'owner-derived old histogram mismatch') + need(sha(HERE / 'inputs/OWNER-PROFILE.json') == owner['literal_files']['PROFILE.json'], + 'published owner histogram digest') + need(replay['status'] == 'PASS_STANDARD_LIBRARY_SEMANTIC_LITERAL_REPLAY', 'portable owner status') + for key in ('replicas', 'calls', 'physical'): + need(owner[key] == replay[key] == arithmetic[key], 'owner normalization: ' + key) + need(owner['rows'] == replay['roles'] == arithmetic['roles'], 'owner roles/rows normalization') + replicas, calls = owner['replicas'], owner['calls'] + need(replicas == 488 and calls == 9 * replicas, 'T488 4392-call normalization') + need(owner['payload_sha256'] == replay['materialized']['payload_sha256'], 'literal owner payload binding') + live = replicas * 896 + deltas, bills = [], {} + for tag in ('base', 'extra'): + before = read(HERE / f'inputs/OLD-{tag}.json.gz') + after = read(HERE / f'inputs/NEW-{tag}.json.gz') + for field in ('start_extra', 'helper_final', 'removed', 'warps', 'center_frames', 'cut', 'restore', 'A'): + need(field in before and field in after and before[field] == after[field], 'preserved word field ' + field) + need(before['report']['width_inventory'] == after['report']['width_inventory'], 'unchanged width inventory') + first, second = (profile_dict(x['report']['local_profile']) for x in (before, after)) + delta = {r: second.get(r, 0) - first.get(r, 0) for r in first.keys() | second.keys()} + delta = {r: n for r, n in delta.items() if n} + need(sum(r * n for r, n in delta.items()) == 0, 'local rank mass must remain unchanged') + deltas.append(delta) + bills[tag] = {'old': first, 'new': second, 'delta': delta} + need(deltas[0] == deltas[1], 'two providers must have identical arithmetic delta') + delta = deltas[0] + need(delta == {1: -2, 2: -2, 3: 2}, 'authenticated release-retiming delta') + derived = {r: old.get(r, 0) + calls * delta.get(r, 0) for r in old.keys() | delta.keys()} + derived = profile_dict(derived) + need(sum(r * n for r, n in derived.items()) == sum(r * n for r, n in old.items()), 'global rank mass invariant') + need(73 * live - sum(r * n for r, n in derived.items()) == live - 64 * calls, 'same complete coverage deficit') + comparator = read(HERE / 'inputs/PR3642-CLAIM.json') + outer = read(HERE / 'inputs/PR3642-OUTER-CLAIM.json') + moment = read(HERE / 'inputs/PR3642-MOMENT.json') + prior = Q(comparator['kappa']) + need(prior == Q(outer['kappa_rational']) == Q(outer['kappa']) == Q(moment['candidate_modern_kappa']), + 'PR3642 recorded and exported modern claims must agree') + return dict(provenance=provenance, replicas=replicas, calls=calls, live=live, + old=old, derived=derived, delta=delta, bills=bills, prior=prior, + old_arithmetic=arithmetic, comparator_moment=moment) + +def check(profile): + """Return exact arithmetic receipt, or raise ValueError; perform no writes. + + profile: dict[int|canonical-decimal-string, nonnegative-int]. It must be the + complete paid histogram, including idle ranks. The independent caller is + responsible for deriving it from physical admission; equality is checked. + """ + data = derive_inputs() + candidate = profile_dict(profile) + need(candidate == data['derived'], 'complete profile differs from owner/local-word composition') + first = load_engine('t488_rational_price', HERE / 'vendor/price.py') + second = load_engine('t488_prime_interval', HERE / 'vendor/arith.py') + live = data['live'] + signed = dict(candidate) + signed[73] = -live + margins = [] + for endpoint, expect in ((ROOT_LOWER, 'negative'), (ROOT_UPPER, 'positive')): + a = first.interval(signed, endpoint) + b = second.moment(candidate, 73, live, endpoint, surcharge=False) + need(a[1] < 0 and b.hi < 1 if expect == 'negative' else a[0] > 0 and b.lo > 1, + 'two-engine strict root bracket: ' + expect) + margins.append({'endpoint': str(endpoint), 'endpoint_decimal': dec(endpoint), + 'signed_sum_interval': first.compact(a), + 'normalized_moment_minus_one_interval': first.compact((b.lo-1, b.hi-1)), + 'required_sign': expect}) + # Independently bind both predecessor roots, not merely their title claims. + predecessors = [] + for label, hist, width, roots in ( + ('PR3633_T488_unretimed', data['old'], live, data['old_arithmetic']['root_interval']), + ('PR3642_T530_retimed', profile_dict(data['comparator_moment']['new_profile']), + data['comparator_moment']['live'], data['comparator_moment']['root_interval'])): + p = dict(hist); p[73] = -width + lo, hi = map(Q, roots) + a, z = first.interval(p, lo), first.interval(p, hi) + b, c = second.moment(hist, 73, width, lo), second.moment(hist, 73, width, hi) + need(a[1] < 0 < z[0] and b.hi < 1 < c.lo, 'authenticated predecessor root: ' + label) + predecessors.append({'label': label, 'root_interval': [str(lo), str(hi)], + 'first_lower': first.compact(a), 'first_upper': first.compact(z), + 'second_lower': first.compact((b.lo-1,b.hi-1)), + 'second_upper': first.compact((c.lo-1,c.hi-1))}) + endpoint = ROOT_LOWER - Q(1,10**46) - Q(1,10**70) + need(endpoint > data['prior'], 'strict gain over authenticated PR3642 modern claim') + per_call = first.interval(data['delta'], Q(data['old_arithmetic']['root_interval'][1])) + need(per_call[1] < 0, 'retiming improves paid moment at predecessor upper endpoint') + return {'status': 'PASS_SOURCE_BOUND_TWO_ENGINE_RETIMED_T488_ARITHMETIC', + 'replicas': data['replicas'], 'calls': data['calls'], 'live': live, + 'old_profile': data['old'], 'new_profile': candidate, 'local_bills': data['bills'], + 'delta_per_call': data['delta'], 'rank_mass': sum(r*n for r,n in candidate.items()), + 'coverage_deficit': 73*live-sum(r*n for r,n in candidate.items()), + 'root_interval': [str(ROOT_LOWER), str(ROOT_UPPER)], + 'root_decimal_interval': [dec(ROOT_LOWER), dec(ROOT_UPPER)], + 'root_margins': margins, 'predecessor_margins': predecessors, + 'strict_delta_interval_per_call': first.compact(per_call), + 'conditional_modern_kappa': str(endpoint), 'conditional_modern_kappa_decimal': dec(endpoint), + 'authenticated_PR3642_modern_kappa': str(data['prior']), + 'gain': str(endpoint-data['prior']), 'gain_decimal': dec(endpoint-data['prior']), + 'gain_percent': dec(100*(endpoint/data['prior']-1)), + 'source_provenance_sha256': sha(HERE/'PROVENANCE.json'), + 'rounding': 'Exact rational interval signs; reported margins rounded outward to 60 decimal places.', + 'scope': SCOPE} + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--profile', type=Path, required=True) + parser.add_argument('--out', type=Path) + args = parser.parse_args() + receipt = check(read(args.profile)) + text = json.dumps(receipt, indent=2) + '\n' + if args.out: + args.out.write_text(text) + else: + print(text, end='') diff --git a/research/retimed-t488-composition/numerics/inputs/NEW-base.json.gz b/research/retimed-t488-composition/numerics/inputs/NEW-base.json.gz new file mode 100644 index 0000000000..d69125e0c7 Binary files /dev/null and b/research/retimed-t488-composition/numerics/inputs/NEW-base.json.gz differ diff --git a/research/retimed-t488-composition/numerics/inputs/NEW-extra.json.gz b/research/retimed-t488-composition/numerics/inputs/NEW-extra.json.gz new file mode 100644 index 0000000000..f3c580b065 Binary files /dev/null and b/research/retimed-t488-composition/numerics/inputs/NEW-extra.json.gz differ diff --git a/research/retimed-t488-composition/numerics/inputs/OLD-ARITHMETIC.json b/research/retimed-t488-composition/numerics/inputs/OLD-ARITHMETIC.json new file mode 100644 index 0000000000..ec74b8efce --- /dev/null +++ b/research/retimed-t488-composition/numerics/inputs/OLD-ARITHMETIC.json @@ -0,0 +1,25 @@ +{ + "replicas": 488, + "calls": 4392, + "roles": 1791936, + "physical": 437757, + "profile": { + "1": 10826280, + "2": 3188592, + "3": 1015650, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + }, + "root_interval": [ + ".001730096363528623534230", + ".001730096363528623534231" + ], + "candidate_endpoint": "17300963635286235342299999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "frontier_status": "Published PR3626 complete source-bound conditional release; both hosted checks passed", + "frontier_sha256": "9f27717c3ddbf5eb7b9773e1b2887ff3899d354019139d916c9b8004aee2e097", + "scope": "Finite profile expectation; no completed T488 admission.", + "frontier_pr": 3626, + "frontier_head": "659fd5e7064d9466b668d7188cbb013b333a415a" +} diff --git a/research/retimed-t488-composition/numerics/inputs/OLD-base.json.gz b/research/retimed-t488-composition/numerics/inputs/OLD-base.json.gz new file mode 100644 index 0000000000..dc6d321b1e Binary files /dev/null and b/research/retimed-t488-composition/numerics/inputs/OLD-base.json.gz differ diff --git a/research/retimed-t488-composition/numerics/inputs/OLD-extra.json.gz b/research/retimed-t488-composition/numerics/inputs/OLD-extra.json.gz new file mode 100644 index 0000000000..78e7b2bb06 Binary files /dev/null and b/research/retimed-t488-composition/numerics/inputs/OLD-extra.json.gz differ diff --git a/research/retimed-t488-composition/numerics/inputs/OWNER-EXPECTED.json b/research/retimed-t488-composition/numerics/inputs/OWNER-EXPECTED.json new file mode 100644 index 0000000000..415eac1a2b --- /dev/null +++ b/research/retimed-t488-composition/numerics/inputs/OWNER-EXPECTED.json @@ -0,0 +1,24 @@ +{ + "rows": 1791936, + "replicas": 488, + "calls": 4392, + "physical": 437757, + "payload_sha256": "20662cc64df34cab409fdf31ed0f0222462530922a01308a46964d661d2374cf", + "profile": { + "1": 10826280, + "2": 3188592, + "3": 1015650, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + }, + "literal_files": { + "FILL.json.gz": "a93f1baa8d1a2eda216fff54708ef6a32586428cbb9ccf5f75fb053e290b7050", + "PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "DISPATCH.json": "15f187340cd32037492d4ce57820a41873dc015f4c689a8596d59c55f0077892", + "ORDER.json": "a4c8f6c96716da0a6d2057373bf3ec3ffb1c7f86bf2b263416dc1c00fee23555", + "PROFILE.json": "1e37bb17fa4ca6fd84d62c6f540e09be96724ea3af4ea50e3e27c6ecb796b35c" + }, + "scope": "Fresh T488 generation and independent actual-native owner audit; no full admission." +} diff --git a/research/retimed-t488-composition/numerics/inputs/OWNER-PORTABLE-REPLAY.json b/research/retimed-t488-composition/numerics/inputs/OWNER-PORTABLE-REPLAY.json new file mode 100644 index 0000000000..314c615866 --- /dev/null +++ b/research/retimed-t488-composition/numerics/inputs/OWNER-PORTABLE-REPLAY.json @@ -0,0 +1,40 @@ +{ + "calls": 4392, + "decomposition": { + "flows": 3843, + "max_edges": 6545, + "max_nodes": 3282 + }, + "fresh_retained_owner_check": false, + "materialized": { + "payload_sha256": "20662cc64df34cab409fdf31ed0f0222462530922a01308a46964d661d2374cf", + "rows": 1791936, + "sha256": "a93f1baa8d1a2eda216fff54708ef6a32586428cbb9ccf5f75fb053e290b7050" + }, + "physical": 437757, + "primal": { + "calls": 4392, + "physical": 437757, + "profile": { + "1": 10826280, + "2": 3188592, + "3": 1015650, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + }, + "replicas": 488, + "required_reserve": 1512, + "retained_payload": 2048, + "roles": 1791936, + "scope": "No literalowner or prefixexecution claim; supplier-native sourcebinding and fulladmission remainrequired.", + "status": "PASS_EXACT_T61_AGGREGATE_ONLY", + "stock_bound_pass": true, + "stock_l2_bits": 1324 + }, + "replicas": 488, + "roles": 1791936, + "scope": "Fresh mixedT61S8 exact integer networks and literal generation. No predecessor owner receipt is reused as candidate proof. Fresh independent literal audit and full release required.", + "status": "PASS_STANDARD_LIBRARY_SEMANTIC_LITERAL_REPLAY" +} diff --git a/research/retimed-t488-composition/numerics/inputs/OWNER-PROFILE.json b/research/retimed-t488-composition/numerics/inputs/OWNER-PROFILE.json new file mode 100644 index 0000000000..be0dba80a8 --- /dev/null +++ b/research/retimed-t488-composition/numerics/inputs/OWNER-PROFILE.json @@ -0,0 +1,9 @@ +{ + "1": 10826280, + "2": 3188592, + "3": 1015650, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 +} diff --git a/research/retimed-t488-composition/numerics/inputs/PR3642-CLAIM.json b/research/retimed-t488-composition/numerics/inputs/PR3642-CLAIM.json new file mode 100644 index 0000000000..c8a315e9c5 --- /dev/null +++ b/research/retimed-t488-composition/numerics/inputs/PR3642-CLAIM.json @@ -0,0 +1,4 @@ +{ + "kappa": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "scope": "Conditional retimed candidate; global controller admission separate" +} diff --git a/research/retimed-t488-composition/numerics/inputs/PR3642-MOMENT.json b/research/retimed-t488-composition/numerics/inputs/PR3642-MOMENT.json new file mode 100644 index 0000000000..fae299a94d --- /dev/null +++ b/research/retimed-t488-composition/numerics/inputs/PR3642-MOMENT.json @@ -0,0 +1,59 @@ +{ + "status": "PASS_TWO_ENGINE_EXACT_MOMENT", + "replicas": 530, + "calls": 4770, + "live": 474880, + "old_profile": { + "1": 11757460, + "2": 3463020, + "3": 1102502, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "new_profile": { + "48": 202828, + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160 + }, + "delta_per_call": { + "1": -2, + "2": -2, + "3": 2 + }, + "root_interval": [ + "21629929897674542689/12500000000000000000000", + "1730394391813963415121/1000000000000000000000000" + ], + "root_decimal": "0.00173039439181396341512", + "first_lower": { + "lower": "-45670745574145846835511724839155644985585069/1000000000000000000000000000000000000000000000000000000000000", + "upper": "-11417686393536461708877931209788911246396267/250000000000000000000000000000000000000000000000000000000000" + }, + "first_upper": { + "lower": "25964876104881426659769591104249409777899239/500000000000000000000000000000000000000000000000000000000000", + "upper": "51929752209762853319539182208498819555798479/1000000000000000000000000000000000000000000000000000000000000" + }, + "second_lower_upper": "-708751949871477037778509036967274355085923566891011141374762660406780995/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144", + "second_upper_lower": "402941890616380789490872336260349005630497570140951566196352857797134723/266998379490113760299377713271194014325338065294581596243380200977777465722580068752870260867072", + "predecessor_root_interval": [ + "0.001730071864705779882540", + "0.001730071864705779882541" + ], + "candidate_modern_kappa": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "candidate_modern_kappa_decimal": "0.0017303943918139634151199999999999999999999998999999999999999999999999", + "gain_vs_predecessor": "3.2252710818353258E-7", + "gain_percent": "0.018642411032930259439740869296402801369381347426636252581579280778220896681799922", + "pins": { + "work/t530-upstream/research/staged-width-t530/supplier3605/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "work/joint-analysis/RETIMED644-660-base.json.gz": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "work/t530-upstream/research/staged-width-t530/supplier3605/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "work/joint-analysis/RETIMED644-660-extra.json.gz": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55" + }, + "scope": "Exact local-word-linked moment only. Modern transfer and global physical/prefix admission must be separately checked; predecessor supplier remains conditional." +} diff --git a/research/retimed-t488-composition/numerics/inputs/PR3642-OUTER-CLAIM.json b/research/retimed-t488-composition/numerics/inputs/PR3642-OUTER-CLAIM.json new file mode 100644 index 0000000000..20554ddb9e --- /dev/null +++ b/research/retimed-t488-composition/numerics/inputs/PR3642-OUTER-CLAIM.json @@ -0,0 +1,13 @@ +{ + "b": "certified complex_lower - 1e-104 (outer/B.json)", + "baseline_head": "e2ca469b08385d3d5e29a918d66dbefaf889e9f3", + "baseline_kappa": "17240352247481048785499999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "branch": "fine source-prime padding (PR1786, chafreaky; Trudgian's prime theorem; vendor/pr1786) with the gauge-free interiors (PR1758), the radix-distributed union schedule with per-visit tag work and the explicit Strassen boundary (tau=45/16); epsilon=1-1.0009765625e-3080 is a free parameter (outer/FINE-PADDING-COMPOSITION.md): kappa = C - 1/F - B, the fixed-grid maximum (epsilon q is 1.70e-3083 below q); the structured boundary of the previous package is not used; omega_C<=9/4 not used; recertified endpoint: the supplier native endpoint is certified to 1e-3000 (accept at the endpoint, reject at endpoint + 1e-3000, repaired fine engines in integer fixed point), and all free slacks are 1e-3080 or below", + "fixed_grid_maximum": "kappa=C-10^-70-10^-46 exactly; same fixed-grid-maximum proof at precision24.", + "gain": "635916706585853657/100000000000000000000000", + "kappa": "0.0017303943918139634151199999999999999999999998999999999999999999999999", + "kappa_rational": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "outer": "PR1673 capped phase-cell fusion (Vlado Vojdanovski)", + "retuned_slacks": "Endpoint precision24; free gaps follow outer/check_ledger.py from the frozen SPEC.", + "supplier": "PR1661 T74 pivot-566 stack with PR2226 anticipatory dirty borrowing, the PR2312 width exchange, frame refit and kernels, the PR2322 handoffs, the PR2435/PR2447 entrance raise, the PR2436 lifted-target aliases, and the PR2530 (zxv) eight source-partner aliases with an owner fill evacuated by the PR2559 (philippeVV) method; this package: six pre-life hostings (cold hosts 273, 275, 289, 291, 305, 321 host helpers 482, 483, 494, 495, 507, 519), a one-gate frame refit with the retired-lender alias 653<-563, and a new exact owner fill" +} diff --git a/research/retimed-t488-composition/numerics/outer.py b/research/retimed-t488-composition/numerics/outer.py new file mode 100644 index 0000000000..e2e3dfe2b2 --- /dev/null +++ b/research/retimed-t488-composition/numerics/outer.py @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Fresh bounded modern outer arithmetic using unchanged authenticated engines.""" +from pathlib import Path +from fractions import Fraction as Q +import hashlib, importlib.util, json, os, subprocess, sys +HERE = Path(__file__).resolve().parent + +def check_outer(moment, out): + """Run the two outer engines into a fresh directory and return their receipt. + + moment must be a receipt freshly returned by check.check(profile). The caller + runs profile arithmetic first. All inherited outer hypotheses remain assumed. + """ + spec=importlib.util.spec_from_file_location('retimed_input_checker',HERE/'check.py') + checker=importlib.util.module_from_spec(spec);spec.loader.exec_module(checker) + checker.authenticate() + if moment['status']!='PASS_SOURCE_BOUND_TWO_ENGINE_RETIMED_T488_ARITHMETIC': + raise ValueError('successful arithmetic receipt required') + if moment['source_provenance_sha256']!=checker.sha(HERE/'PROVENANCE.json'): + raise ValueError('moment provenance mismatch') + verified = checker.check(moment['new_profile']) + for field in ('root_interval', 'conditional_modern_kappa', 'authenticated_PR3642_modern_kappa', 'live', 'replicas'): + if moment[field] != verified[field]: + raise ValueError('outer input differs from freshly checked moment: ' + field) + out=Path(out) + if out.exists():raise ValueError('fresh outer output directory required') + out.mkdir(parents=True);(out/'outer').mkdir();(out/'new').mkdir() + C=Q(moment['root_interval'][0]);K=Q(moment['conditional_modern_kappa']);prior=Q(moment['authenticated_PR3642_modern_kappa']) + if K!=C-Q(1,10**46)-Q(1,10**70) or K<=prior: + raise ValueError('candidate transfer expression or comparator mismatch') + def save(p,x):p.write_text(json.dumps(x,indent=2)+'\n') + save(out/'new/SPEC.json',dict(geometry=dict(dimension=73,replicas=moment['replicas']), + expected=dict(complex_lower=str(C),kappa=str(prior),global_profile=moment['new_profile'],live=moment['live']), + outer_refinement=dict(endpoint_digits=24))) + save(out/'CLAIM.json',dict(kappa=str(K),scope=checker.SCOPE)) + save(out/'outer/B.json',dict(b=str(C-Q(1,10**104)),b_above_endpoint=moment['root_interval'][1],profile=moment['new_profile'],live=moment['live'])) + env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONINTMAXSTRDIGITS='0') + for name in ('check_ledger.py','independent_check.py'): + raw=(HERE/'vendor'/name).read_bytes();(out/'outer'/name).write_bytes(raw) + with (out/(name+'.log')).open('w') as f: + subprocess.run([sys.executable,'-B',str((out/'outer'/name).resolve())],env=env,stdout=f,stderr=subprocess.STDOUT,check=True) + ledger=json.loads((out/'outer/LEDGER.json').read_bytes());row=ledger['rows']['struct_boundary_radix_union'];controls=ledger['rejecting_controls']['struct_boundary_radix_union'] + if Q(row['kappa']['rational'])!=K:raise ValueError('ledger does not derive candidate kappa') + checks=row['strict_checks'] + if len(checks)!=63 or not all(Q(x['rational'])>0 for x in checks.values()):raise ValueError('63 positive outer inequalities required') + if len(controls)!=17 or not all(x and all(Q(v['rational'])<=0 for v in x.values())for x in controls.values()):raise ValueError('17 original outer rejecting controls required') + independent=json.loads((out/'outer/INDEPENDENT.json').read_bytes()) + if Q(independent['rows']['struct_boundary_radix_union']['kappa'])!=K:raise ValueError('independent outer kappa mismatch') + result=dict(status='PASS_SOURCE_BOUND_RETIMED_T488_MODERN_OUTER_ARITHMETIC',kappa=str(K),kappa_decimal=checker.dec(K), + strict_inequalities=63,rejected_controls=17,independent_status=independent['status'], + exact_strict_margins=checks,exact_rejection_margins=controls, + ledger_sha256=checker.sha(out/'outer/LEDGER.json'),independent_sha256=checker.sha(out/'outer/INDEPENDENT.json'), + checker_sha256=checker.sha(HERE/'vendor/check_ledger.py'),independent_checker_sha256=checker.sha(HERE/'vendor/independent_check.py'), + scope='Source-bound exact modern outer arithmetic only. All inherited analytic and supplier hypotheses remain conditional; no native/controller/full scientific admission is run or inferred.') + save(out/'RESULT.json',result) + return result diff --git a/research/retimed-t488-composition/numerics/run.py b/research/retimed-t488-composition/numerics/run.py new file mode 100644 index 0000000000..545cba10c5 --- /dev/null +++ b/research/retimed-t488-composition/numerics/run.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Bounded two-engine moment plus modern outer arithmetic; no full admission.""" +from pathlib import Path +import argparse,importlib.util,json +HERE=Path(__file__).resolve().parent + +def load(name): + spec=importlib.util.spec_from_file_location('retimed_'+name,HERE/(name+'.py')) + module=importlib.util.module_from_spec(spec);spec.loader.exec_module(module);return module + +def main(): + p=argparse.ArgumentParser(description=__doc__);p.add_argument('--profile',type=Path,required=True);p.add_argument('--out',type=Path,required=True);a=p.parse_args() + if a.out.exists():raise ValueError('fresh bounded arithmetic output directory required') + a.out.mkdir(parents=True) + check=load('check');moment=check.check(json.loads(a.profile.read_bytes())) + (a.out/'MOMENT.json').write_text(json.dumps(moment,indent=2)+'\n') + transfer=load('outer').check_outer(moment,a.out/'outer') + result={'status':'PASS_BOUNDED_RETIMED_T488_MOMENT_AND_MODERN_OUTER','kappa':transfer['kappa'], + 'root_interval':moment['root_interval'],'strict_outer_inequalities':transfer['strict_inequalities'], + 'outer_rejection_controls':transfer['rejected_controls'], + 'scope':'Bounded exact moment and modern outer transfer arithmetic both pass. Native, controller, complete release, all-size compiler, physical realization, precision/tape, exact recovery and inherited analytic/BIT hypotheses remain separate and conditional.'} + (a.out/'RESULT.json').write_text(json.dumps(result,indent=2)+'\n');print(result['status']) + +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/numerics/test_check.py b/research/retimed-t488-composition/numerics/test_check.py new file mode 100644 index 0000000000..8e3cdd2244 --- /dev/null +++ b/research/retimed-t488-composition/numerics/test_check.py @@ -0,0 +1,72 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Meaningful rejection controls for bounded arithmetic and source binding.""" +from pathlib import Path +import argparse, importlib.util, json, shutil, tempfile + +HERE = Path(__file__).resolve().parent +spec = importlib.util.spec_from_file_location('retimed_t488_check', HERE / 'check.py') +m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m) + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + data = m.derive_inputs() + profile = data['derived'] + controls = [] + def reject(name, action): + try: + action() + except ValueError as exc: + controls.append({'name': name, 'status': 'REJECTED', 'reason': str(exc)}) + else: + raise AssertionError('bad candidate accepted: ' + name) + reject('unretimed_complete_profile', lambda: m.check(data['old'])) + missing_idle = dict(profile); del missing_idle[48] + reject('omitted_nonlocal_rank48_idle_calls', lambda: m.check(missing_idle)) + same_mass = dict(profile); same_mass[1] -= 2; same_mass[2] += 1 + assert sum(r*n for r,n in same_mass.items()) == sum(r*n for r,n in profile.items()) + reject('mass_preserving_wrong_histogram', lambda: m.check(same_mass)) + wrong_calls = {r: data['old'].get(r,0) + 4770*data['delta'].get(r,0) + for r in data['old'].keys() | data['delta'].keys()} + reject('wrong_T530_call_multiplicity', lambda: m.check(wrong_calls)) + negative = dict(profile); negative[48] = -1 + reject('negative_count', lambda: m.check(negative)) + decimal = dict(profile); decimal[1] = float(decimal[1]) + reject('floating_count', lambda: m.check(decimal)) + boolean = dict(profile); boolean[1] = True + reject('boolean_count', lambda: m.check(boolean)) + duplicate = dict(profile); duplicate['1'] = duplicate[1] + reject('duplicate_integer_string_rank', lambda: m.check(duplicate)) + wrong_parent = dict(profile); wrong_parent[73] = 1 + reject('paid_rank_equals_parent', lambda: m.check(wrong_parent)) + original_lower, original_upper = m.ROOT_LOWER, m.ROOT_UPPER + try: + m.ROOT_LOWER = original_upper + m.ROOT_UPPER = original_upper + m.Q(1,10**24) + reject('next_grid_endpoint_claimed_feasible', lambda: m.check(profile)) + finally: + m.ROOT_LOWER, m.ROOT_UPPER = original_lower, original_upper + # Corrupt one authenticated source in an isolated test copy. Never edit inputs. + scratch = Path(tempfile.mkdtemp(prefix='tampered-input-control-', dir=args.out.parent)) + shutil.copytree(HERE/'inputs',scratch/'inputs') + shutil.copytree(HERE/'vendor',scratch/'vendor') + shutil.copy2(HERE/'PROVENANCE.json',scratch/'PROVENANCE.json') + claim = scratch/'inputs/PR3642-CLAIM.json' + raw = json.loads(claim.read_text());raw['kappa'] = '0';claim.write_text(json.dumps(raw)) + try: + m.HERE = scratch + reject('comparator_claim_byte_mutation',lambda:m.check(profile)) + finally: + m.HERE = HERE + shutil.rmtree(scratch) + receipt = m.check(profile) + result = {'status':'PASS_VALID_PROFILE_AND_ELEVEN_REJECTION_CONTROLS', + 'positive_status':receipt['status'], 'controls':controls, + 'source_provenance_sha256':m.sha(HERE/'PROVENANCE.json'), + 'scope':m.SCOPE} + assert len(controls)==11 + args.out.write_text(json.dumps(result,indent=2)+'\n') + print(result['status']) + +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/numerics/vendor/LICENSE b/research/retimed-t488-composition/numerics/vendor/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/retimed-t488-composition/numerics/vendor/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/retimed-t488-composition/numerics/vendor/arith.py b/research/retimed-t488-composition/numerics/vendor/arith.py new file mode 100644 index 0000000000..b9e3014443 --- /dev/null +++ b/research/retimed-t488-composition/numerics/vendor/arith.py @@ -0,0 +1,133 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Code-disjoint exact interval arithmetic for complex-moment endpoints and the kappa reduction. + +Imports nothing from the retained engines (moment.py, base_two_moment.py, outer.py). +Extends the arithmetic of research/t37-endpoints-independent (PR1051) to every prime: + ln 2 = 2 atanh(1/3), ln p = ln(p-1) + 2 atanh(1/(2p-1)) for odd primes p, +since p/(p-1) = (1+t)/(1-t) with t = 1/(2p-1) <= 1/5. atanh tails use the geometric bound +t^(2K+1) / ((2K+1)(1-t^2)); exp uses a Taylor polynomial with remainder 2 y^(K+1)/(K+1)!; +all intervals are exact rationals rounded outward to multiples of 2^-PREC. +""" +from fractions import Fraction as Q +from functools import lru_cache + +PREC = 320 +TERMS = 120 +TAYLOR = 16 + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def down(x): + return Q((x.numerator << PREC) // x.denominator, 1 << PREC) + + +def up(x): + return -down(-x) + + +class I: + __slots__ = ('lo', 'hi') + + def __init__(self, lo, hi=None): + hi = lo if hi is None else hi + require(lo <= hi, 'interval order') + self.lo, self.hi = down(Q(lo)), up(Q(hi)) + + def __add__(self, o): + o = o if isinstance(o, I) else I(o) + return I(self.lo + o.lo, self.hi + o.hi) + + def __sub__(self, o): + o = o if isinstance(o, I) else I(o) + return I(self.lo - o.hi, self.hi - o.lo) + + def __mul__(self, o): + o = o if isinstance(o, I) else I(o) + p = (self.lo * o.lo, self.lo * o.hi, self.hi * o.lo, self.hi * o.hi) + return I(min(p), max(p)) + + __radd__ = __add__ + __rmul__ = __mul__ + + +def atanh(t): + t = Q(t) + require(0 < t <= Q(1, 3), 'atanh argument') + s, power = Q(0), t + for k in range(TERMS): + s += power / (2 * k + 1) + power *= t * t + return I(s, s + power / ((2 * TERMS + 1) * (1 - t * t))) + + +def is_prime(p): + return p >= 2 and all(p % d for d in range(2, int(p ** 0.5) + 1)) + + +@lru_cache(None) +def ln_prime(p): + require(is_prime(p), 'not a prime') + if p == 2: + return 2 * atanh(Q(1, 3)) + return ln_int(p - 1) + 2 * atanh(Q(1, 2 * p - 1)) + + +@lru_cache(None) +def ln_int(k): + require(k >= 1, 'positive integer') + out, d = I(0), 2 + while k > 1: + while k % d == 0: + out = out + ln_prime(d) + k //= d + d += 1 + return out + + +def exp_small(y): + require(0 <= y.lo and y.hi < Q(1, 100), 'exp range') + lo = hi = tlo = thi = Q(1) + for k in range(1, TAYLOR + 1): + tlo = down(tlo * y.lo / k) + thi = up(thi * y.hi / k) + lo += tlo + hi += thi + return I(lo, hi + thi * y.hi / (TAYLOR + 1) * 2) + + +def moment(H, m, W, z, surcharge=False): + total = I(0) + lm = ln_int(m) + for r, n in H.items(): + require(0 < r < m, 'child rank range') + total = total + I(Q(r * n, m * W)) * exp_small((lm - ln_int(r)) * I(z)) + if surcharge: + total = total + I(Q(32 * m * sum(H.values()), 10 ** 16 * W)) * exp_small(lm * I(z)) + return total + + +def certify(H, m, W, b, grid=Q(1, 10 ** 24), surcharge=False): + at, nxt = moment(H, m, W, b, surcharge), moment(H, m, W, b + grid, surcharge) + require(at.hi < 1, 'moment not below one at the endpoint') + require(nxt.lo > 1, 'moment not above one at the next grid point') + return (float(at.hi - 1), float(nxt.lo - 1)) + + +def kappa_from(b, c, grid=Q(1, 10 ** 18)): + """Selected T37 reduction: s = min(c, (1-beta) b) - 10^-27, seven bootstrap steps from 384599/10^10, + q = a7 (1 - 2 eta), kappa = largest grid point strictly below (1 - eta) q / (1 + q); eta = beta = 10^-24.""" + eta = beta = Q(1, 10 ** 24) + s = min(c, (1 - beta) * b) - Q(1, 10 ** 27) + a = Q(384599, 10 ** 10) + for _ in range(7): + a = (1 - s) * s + s * a + q = a * (1 - 2 * eta) + margin = (1 - eta) * q / (1 + q) + t = margin / grid + k = (-((-t.numerator) // t.denominator) - 1) * grid + require(k < margin <= k + grid, 'grid reduction') + return k, margin, ('bit' if c <= (1 - beta) * b else 'complex') diff --git a/research/retimed-t488-composition/numerics/vendor/check_ledger.py b/research/retimed-t488-composition/numerics/vendor/check_ledger.py new file mode 100644 index 0000000000..d3b6149c5c --- /dev/null +++ b/research/retimed-t488-composition/numerics/vendor/check_ledger.py @@ -0,0 +1,260 @@ +#!/usr/bin/env python3 +"""Exact ledger for fine-prime padding (PR1786, chafreaky / Chafik Boukhalfa, with Tim Trudgian's prime theorem) at the free point epsilon = 1 - (1025/1024)*10^-(DIG+80), explicit Strassen boundary, retuned to the fixed-grid maximum kappa = C - 1/FLOOR - BACKOFF. + +Adapted from PR1786's ledger, itself adapted from PR1731's cost ledger, credited to Jeremy Kothe et al. and +Vlado Vojdanovski (PR1673); uses PR1758's gauge-free chirp and per-visit tag +accounting. New source-prime, coefficient-setup and halo lemmas are in +FINE-PRIME-PADDING.md. Finite arithmetic does not prove the all-size theorem. +""" +from fractions import Fraction as Q +from decimal import Decimal, localcontext +from pathlib import Path +from math import factorial +import hashlib, json, sys +sys.set_int_max_str_digits(0) + +if not __debug__: raise RuntimeError('Assertions must be enabled') +HERE=Path(__file__).resolve().parent +WORK=HERE.parent +SPEC=WORK/'new/SPEC.json' +CLAIM=WORK/'CLAIM.json' +BJ=json.loads((HERE/'B.json').read_text()) +spec=json.loads(SPEC.read_text()) +# Free strict slacks of the PR1673 proof (retuned in this package, see RETUNED-SLACKS.md); every one only needs to be > 0. +DIG=spec['outer_refinement']['endpoint_digits'] # the supplier endpoint is certified to 10^-DIG (accept at the endpoint, reject at endpoint + 10^-DIG); every slack sits 10 digits below +# Fixed-grid maximum (PR2180 / PR2161, dataisfire; proof PROOF-GRID-MAX.md): the free gaps shrink together to R0 = 10^-(DIG+80); grid, backoff and certified endpoint are unchanged. +R0=Q(1,10**(DIG+80)); ZETA=R0/100; SLACK=R0; GAP=R0; STOP=R0/10**6 +FLOOR=10**(DIG+46); BACKOFF=Q(1,10**(DIG+22)); B_GAP=R0 +# Fine prime padding: theta is between 1/(4p^2) and 1/(2p^2-1). +# Online chirp guard beta+2*xi-2<1; coefficient setup uses O(p^2 log p) bits. +# epsilon = 1 - DELTA_E is a FREE parameter (outer/FINE-PADDING-COMPOSITION.md sec. 2): every row is strictly satisfied for every DELTA_E > r0 = 10^-(DIG+80); beta = 1 - 3 DELTA_E lies in the admissible window +# [1 - DELTA_E (1 + 1/q), 1 - 2 DELTA_E). DELTA_E = (1025/1024) r0 keeps the gamma spare power 1-eps-r0 = r0/1024 > 0 and puts C - eps*q below 1/FLOOR (PROOF-GRID-MAX.md). +DELTA_E=Q(1025,1024)*R0 +EPS=1-DELTA_E +BETA=1-3*DELTA_E +THETA_POWER=Q(2) +HALO_POWER=48 +CORE_POWER=128 +STRASSEN_TAU=Q(45,16) +KAPPA_1828=Q('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # exact kappa of rohanarun's PR1828 (slack refinement of PR1800 at 1e-96), from its body +KAPPA_1839=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # exact kappa of PR1839 (previous package: 1e-90 endpoint) +KAPPA_1875=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # exact kappa of rohanarun's PR1875 (1e-300 endpoint), from its body +KAPPA_1876=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # exact kappa of rohanarun's PR1876 (1e-400 endpoint), from its body +KAPPA_1897=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # exact kappa of M6LI's PR1897 (1e-500 grid), from its body +KAPPA_1786=Q('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # exact kappa of chafreaky's PR1786 ledger (EXPECTED-BALANCE.json), headline 0.001679754788150048 +KAPPA_PKG5=Q('0.001677992607205282520732088774830808372222877897034109604209719298829805473412451530867883424937597') # previous package (rectangular k=2, tau_eff=2.2500351) +KAPPA_PKG4=Q('0.0016778199023144364336310551358776001013829401215770658599799349282716974076737897457922714197448847') # previous package (radix union schedule, square boundary tau=2.372864) +KAPPA_1712=Q('0.0016776417313433545642517275958639984231708545722735432722117400060454625429077941422798526440584702') # pkg of PR1712 (Le Gall tau=12/5, old union row) +KAPPA_1699=Q('0.001677641731343354564251058287063644749065568493') # exact kappa of PR1699's ledger (Chafik Boukhalfa), same supplier profile +certified_complex=Q(spec['expected']['complex_lower']) +bit=Q('0.001733427039589844234749') +# Keep short independently checkable decimals strictly inside both endpoints. +b=certified_complex-B_GAP # strictly inside the certified supplier endpoint; B.json carries the same exact value +assert b==Q(BJ['b']) +q=b-GAP +a=(q+b)/2 +online=Q(spec['expected']['kappa']) +old=Q('0.001673360105405778') +assert b0 +assert m==73 and W==896*T and W==BJ['live'] +EXPECTED_PROFILE={int(k):v for k,v in BJ['profile'].items()} +assert profile==EXPECTED_PROFILE + +GB=int((DIG+130)*3.3220)+16 # enclosure grid 2^-GB, about 50 digits below the slacks +ONE=1<=2:x/=2;k+=1 + lo,hi=unit_log(x) + return down(lo+k*ln2[0]),up(hi+k*ln2[1]) +def exp(x): + assert 0<=x>GB)//j;th=_cd(-((-th*xu)>>GB),j);sl+=tl;sh+=th + tn=_cd(-((-th*xu)>>GB),EN) # x^EN/EN! (rounded up); the tail is at most twice this + return Q(int(sl),ONE),Q(int(sh+2*tn+2),ONE) +def moment(endpoint): + lo=hi=Q(0) + for r,n in profile.items(): + l,h=log(Q(m,r)); weight=Q(n*r,m*W) + lo+=weight*exp(endpoint*l)[0] + hi+=weight*exp(endpoint*h)[1] + return down(lo),up(hi) + +native=moment(b) +assert native[1]<1 +b_up=Q(BJ['b_above_endpoint']) +assert b_up>certified_complex and moment(b_up)[0]>1 # a larger test endpoint is rejected + +def ledger(kind, *, q_=q, zeta=ZETA, slack=SLACK, + old_scan=False, full_gauge=False, full_key=False, old_union=False, old_theta=False, old_linear=False, old_tag=False, + eps_=EPS, beta_=BETA, tau_eff=STRASSEN_TAU, halo_power=HALO_POWER, core_power=CORE_POWER): + r=R0; stop=STOP + # Existing explicit Strassen format, 7^16<2^45; c=3/32. + # Union: radix-distributed schedule (outer/UNION-SCHEDULE.md, new in this package): row exponent eps+1/2-xi. The boundary row binds with main; the Gaussian row has slack at this explicit point. + c=(3-tau_eff)/2 + eps=eps_; beta=beta_ + xi=eps*(1+q_)-c+slack + saving=eps*q_ + # Deliberate strict gap (BACKOFF) after decimal truncation to the FLOOR grid. + kappa=Q((saving*FLOOR).__floor__(),FLOOR)-BACKOFF + # kappa is derived, not silently asserted to equal an expected decimal. + tau=1-a; sigma=1-b + internal=tau+(1-stop)*max(sigma-tau,Q(0)) + leaf=sigma+stop*(1-sigma) + lam=1-(q_+a)/2 + key=beta+1-eps + margins={ + 'main_transform':saving, + 'global_coordinate_router':a, + 'fused_gaussian':1-eps+q_*beta, + 'group_bit_router':1-eps+a*beta, + 'group_scans':1-eps+beta, + 'boundary_algebraic_matrix':c+xi-eps, + 'sparse_union_movement':xi+Q(1,2)-eps, + 'polynomial_products':eps, + 'microbox_face_corrections':1-(eps+beta+halo_power-core_power+2), + } + if old_union:margins['old_g_factor_union_row']=1-eps-beta-Q(1,2)+xi + if old_scan:margins['old_per_axis_scan']=1-eps + if full_key:margins['unnecessary_full_key_sort']=margins['sparse_union_movement']-key + checks={ + 'actual_bit_above_effective':bit-a, + 'complex_above_effective':b-a, + 'q_positive':q_, 'complex_endpoint':b-q_, + 'q_below_effective':a-q_, 'stop_positive':stop, + 'stop_below_one':1-stop, + 'leaf_saving_above_effective':(1-stop)*b-a, + 'q_below_internal':1-internal-q_, 'q_below_leaf':1-leaf-q_, + 'lambda_above_tau':lam-tau, 'lambda_above_sigma':lam-sigma, + 'lambda_above_internal':lam-internal, + 'lambda_prime_above_lambda':1-q_-lam, + 'lambda_prime_above_leaf':1-q_-leaf, + 'epsilon_positive':eps,'epsilon_below_one':1-eps, + 'cap_above_band':xi-Q(1,2),'cap_below_cell':eps-xi, + 'group_positive':beta,'group_below_dimension':eps-beta, + 'support_router_span':1-beta, + 'group_gauge_power_slack':1-(2*xi-THETA_POWER)-r-beta, + 'actual_logarithmic_group_guard':1-(2*xi-THETA_POWER)-beta, + 'global_gamma_power_slack':1-eps-r, + 'actual_logarithmic_gamma_guard':1-eps, + 'alpha_logarithm_absorption':r, + 'group_key_fits_record':1-key, + 'membership_arithmetic_fits_record':1-beta-2*(1-eps), + 'microbox_halo_volume':core_power-halo_power-beta, + 'positive_layout_slack':slack, + 'short_record_fallback':eps-a, + 'improvement_over_online_final':kappa-online, + 'improvement_over_previous_local_final':kappa-old, + 'complex_below_one_over_32':Q(1,32)-b, + } + checks['strassen_integer_power_gap']=Q(2**tau_eff.numerator-7**tau_eff.denominator) + checks['theta_positive_polynomial_power']=THETA_POWER + checks['cap_below_phase_cell_power']=THETA_POWER-xi + checks['halo_covers_generic_inverse_radius']=Q(halo_power-43) + checks['union_tag_work_per_visit_fits_record']=1-beta + checks['union_header_fits_record']=1-beta + checks['source_axis_superpolynomial']=1-eps + checks['improvement_over_pr1786']=kappa-KAPPA_1786 + checks['improvement_over_pr1828']=kappa-KAPPA_1828 + checks['improvement_over_pr1839']=kappa-KAPPA_1839 + checks['improvement_over_pr1875']=kappa-KAPPA_1875 + checks['improvement_over_pr1876']=kappa-KAPPA_1876 + checks['improvement_over_pr1897']=kappa-KAPPA_1897 + checks['improvement_over_pr1758']=kappa-Q('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') + checks['improvement_over_pr1699']=kappa-KAPPA_1699 + checks['improvement_over_pr1712']=kappa-KAPPA_1712 + checks['improvement_over_previous_package']=kappa-KAPPA_PKG4 + checks['improvement_over_pkg_k2']=kappa-KAPPA_PKG5 + if full_gauge:checks['unrecentered_group_gauge']=1-THETA_POWER-r-beta + if old_theta:checks['old_theta_chirp_guard']=1-(2*xi-eps)-r-beta + if old_linear:checks['old_linear_guard']=1-xi-r-beta + if old_tag:checks['old_union_tag_2beta']=1-2*beta + # Main-binding family invariant (PR2180): the Gaussian saving stays above the main saving. The fixed kappa grid (FLOOR) is coarser than the free gaps, + # so the *_above_kappa rows alone would no longer exclude a beta outside the main-binding window; this row is delta*(1-2q) > 0. + checks['gaussian_above_main']=margins['fused_gaussian']-saving + checks.update({n+'_above_kappa':v-kappa for n,v in margins.items()}) + assert margins['boundary_algebraic_matrix']==saving+slack + assert margins['sparse_union_movement']==saving+slack+(tau_eff-2)/2 + return {'kind':kind,'kappa':kappa,'epsilon':eps,'xi':xi,'beta':beta, + 'q':q_,'a':a,'r0':r,'zeta':zeta,'slack':slack, + 'margins':margins,'strict_checks':checks} + +def encode(x): + if isinstance(x,Q): + with localcontext() as c: + c.prec=DIG+200 + return {'rational':str(x),'decimal':str(Decimal(x.numerator)/Decimal(x.denominator))} + if isinstance(x,dict):return {str(k):encode(v) for k,v in x.items()} + if isinstance(x,(list,tuple)):return [encode(v) for v in x] + return x + +rows={};controls={} +for kind in ['struct_boundary_radix_union']: + row=ledger(kind) + assert all(v>0 for v in row['strict_checks'].values()) + assert min(row['margins'].values())==row['margins']['main_transform'] + # fixed-grid maximum: C*FLOOR is an integer and 0 < C - eps*q < 1/FLOOR, so floor(FLOOR*eps*q)/FLOOR = C - 1/FLOOR exactly and kappa attains the grid/backoff ceiling + assert (certified_complex*FLOOR).denominator==1 and 0= 1/(4 p^THETA_POWER)), an exponential factor <= p^2 eventually, +# alpha^5 polylogarithmic; a further half power is allowed for the polylogarithmic and bounded-constant factors of the augmented matrices. The umbrella must exceed that budget. +UMBRELLA_POWER=10 +def umbrella_margin(theta_power):return UMBRELLA_POWER-(2*theta_power+2+Q(1,2)) +assert umbrella_margin(THETA_POWER)>0 and umbrella_margin(Q(15,4))<=0 # control: the umbrella would fail silently for THETA_POWER >= 3.75 +HALO_UMBRELLA={'umbrella_power':UMBRELLA_POWER,'theta_power':THETA_POWER,'exponent_budget':2*THETA_POWER+2+Q(1,2),'margin':umbrella_margin(THETA_POWER),'fails_from_theta_power':Q(15,4)} +out={'status':'PASS_FINE_PRIME_PADDING_EXACT_ARITHMETIC', + 'scope':'Conditional fine-prime padding composition. Fresh native admission is required by verify.py. The cited prime theorem, written gauge-free theorem and inherited all-size interfaces are not proved by this arithmetic. No independent human review is claimed.', + 'geometry_changes':{'theta_power':THETA_POWER,'halo_power':HALO_POWER,'core_power':CORE_POWER,'matrix_exponent':STRASSEN_TAU}, + 'halo_umbrella':HALO_UMBRELLA,'complex_lower_short':b,'complex_lower_pinned':certified_complex, + 'native_moment':native,'profile':profile,'m':m,'W':W, + 'online_final_kappa':online,'rows':rows,'rejecting_controls':controls, + 'pr1673_kappa':Q('0.001677160151714381'),'improvement_over_pr1673':rows['struct_boundary_radix_union']['kappa']-Q('0.001677160151714381'), + 'source_sha256':{p.relative_to(WORK).as_posix():hashlib.sha256(p.read_bytes()).hexdigest() for p in [SPEC,CLAIM]}} +(HERE/'LEDGER.json').write_text(json.dumps(encode(out),indent=2)+'\n') +print(out['status']) +for name,row in rows.items(): + print(name,'FINAL KAPPA',encode(row['kappa'])['decimal'], + 'positive checks',len(row['strict_checks']), + 'gain over online',encode(row['kappa']-online)['decimal']) diff --git a/research/retimed-t488-composition/numerics/vendor/independent_check.py b/research/retimed-t488-composition/numerics/vendor/independent_check.py new file mode 100644 index 0000000000..b838c430ef --- /dev/null +++ b/research/retimed-t488-composition/numerics/vendor/independent_check.py @@ -0,0 +1,60 @@ +"""Independent balance-equation check (PR1673, adapted: this package's supplier b and SPEC), not an execution of the ledger in check_ledger.py.""" +from fractions import Fraction as F +from pathlib import Path +from decimal import Decimal,localcontext +import json,hashlib,sys +sys.set_int_max_str_digits(0) +D=Path(__file__).resolve().parent;W=D.parent +src=W/'new/SPEC.json' +BJ=json.loads((D/'B.json').read_text()) +spec=json.loads(src.read_text());pinned=F(spec['expected']['complex_lower']) +DIG=spec['outer_refinement']['endpoint_digits'];T=10**(DIG+80) # all free slacks are 10^-(DIG+80) or below (fixed-grid-maximum point, PR2180 / PR2161 dataisfire) +b=F(BJ['b']);q=b-F(1,T);eff=(q+b)/2;actual_bit=F('0.001733427039589844234749') +r=F(1,T);z=F(1,T*100);s=F(1,T) +assert 0eff +rows={} +# FINE-PRIME PADDING (outer/FINE-PADDING-COMPOSITION.md): explicit point epsilon=1-delta, beta=1-3 delta, delta=(1025/1024)*10^-(DIG+80), Strassen boundary tau=45/16 (7^16<2^45), c=3/32, +# theta in (1/(4p^2),1/(2p^2-1)], chirp guard beta+2xi-2<1, halo power 48, core power 128. Derived here WITHOUT the ledger code; the structured boundary is not used. +delta=F(1025,1024*T);E=1-delta;B=1-3*delta +assert 7**16<2**45;tau=F(45,16);c=(3-tau)/2;assert c==F(3,32) +nu=2;halo=48;core=128 +X=E+E*q+s-c # boundary saving c+X-E = E q + s +assert c+X-E==E*q+s +# the Gaussian row has slack: 1-E+qB-Eq = delta(1-2q) +assert 1-E+q*B-E*q==delta*(1-2*q)>0 +# admissible beta window for this epsilon: Gaussian row needs beta >= 1-delta(1+1/q); membership needs beta < 1-2 delta +assert 1-delta*(1+1/q)<=B<1-2*delta +assert F(1,2)z>0 and 1-E-r>0 and core-halo-B>0 and halo>43 +assert 1-B>0 and 1-B-2*(1-E)==delta>0 +costs={'transform':1-E*q,'global_router':1-eff,'gaussian':E-q*B,'group_router':E-eff*B,'group_scans':E-B,'boundary':E-X+(tau-1)/2,'sparse_union':E+F(1,2)-X,'polynomials':1-E,'microfaces':E+B+halo-core+2} +K=F((E*q*10**(DIG+46)).__floor__(),10**(DIG+46))-F(1,10**(DIG+22)) +assert max(costs.values())==costs['transform'] and all(v<1-K for v in costs.values()) +# earlier packages' guards fail at this point (they are rejecting controls in the ledger): linear guard 1-X-r-B<0, old theta chirp guard 1-(2X-E)-r-B<0, 2B<1 test fails +assert 1-X-r-B<0 and 1-(2*X-E)-r-B<0 and 1-2*B<0 +assert K>F('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # PR1786 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # PR1828 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # PR1839 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # PR1875 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # PR1876 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # PR1897 exact kappa +assert K>F('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') # PR1758 +assert K r0 (beta = 1-3 delta); only kappa moves, kappa = (1-delta) q - O(1e-76) +# fixed-grid maximum: saving < C and C*FLOOR integral give K <= C-1/FLOOR-BACKOFF; this point attains it (0 < C-E*q < 1/FLOOR) +FL=10**(DIG+46);assert (pinned*FL).denominator==1 and 00 and 1-dd*(1+1/q)<=Bd<1-2*dd and 1-Ed+q*Bd-Ed*q>0 and Ed-Bd>0 and 1-Bd-2*(1-Ed)>0 + assert F(1,2)0 and core-halo-Bd>0 + assert 1-Ed+eff*Bd>Ed*q and eff>Ed*q and 1-Ed+Bd>Ed*q and Ed>Ed*q and 1-(Ed+Bd+halo-core+2)>Ed*q + sweep.append((str(dd),str(float(q-Ed*q)))) +assert 1-F(1,T)<=1-r # delta=r0 itself is rejected by 1-eps-r0>0 +assert not (1-(1-r)-r>0) +rows['struct_boundary_radix_union']={'epsilon':str(E),'cap':str(X),'beta':str(B),'kappa':str(K),'margin_above_kappa':str(E*q-K),'checked_cost_powers':len(costs),'gap_to_q':str(q-K),'epsilon_free_sweep_delta_gap_to_q':sweep} +report={'status':'PASS_INDEPENDENT_BALANCE_DERIVATION','source_sha256':hashlib.sha256(src.read_bytes()).hexdigest(),'b':str(b),'rows':rows,'scope':'Independent balance derivation and margin comparisons for this package\'s supplier endpoint; the supplier native admission is bound by verify_release.py; inherited all-size assumptions remain.'} +(D/'INDEPENDENT.json').write_text(json.dumps(report,indent=2)+'\n') +print(json.dumps(report,indent=2)) diff --git a/research/retimed-t488-composition/numerics/vendor/price.py b/research/retimed-t488-composition/numerics/vendor/price.py new file mode 100644 index 0000000000..cc53a4ef64 --- /dev/null +++ b/research/retimed-t488-composition/numerics/vendor/price.py @@ -0,0 +1,77 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Rational enclosures for the finite paid-profile comparison. + +For 1<=x<2, log(x)=2*sum(z^(2j+1)/(2j+1)), z=(x-1)/(x+1). +The positive remainder is at most 2*z^(2n+1)/((2n+1)*(1-z*z)). +Range reduction gives z<=1/3. Alternating exponential partial sums then +bound exp(-a*log(r)); no floating arithmetic or root solver is used. +""" +from fractions import Fraction as Q +from functools import lru_cache + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def log_series(x, n=100): + z = (x - 1) / (x + 1) + total = Q(0) + power = z + for j in range(n): + total += 2 * power / (2*j + 1) + power *= z*z + tail = 2 * power / ((2*n + 1) * (1-z*z)) + return total, total + tail + + +@lru_cache(None) +def log_bounds(rank): + need(type(rank) is int and 1 <= rank <= 73, 'priced rank domain') + exponent = rank.bit_length() - 1 + a, b = log_series(Q(rank, 1 << exponent)) + c, d = log_series(Q(2)) + lo, hi = a + exponent*c, b + exponent*d + # Outward rational quantization keeps subsequent denominators bounded. + scale = 10**90 + low = (lo.numerator * scale) // lo.denominator + high = -((-hi.numerator * scale) // hi.denominator) + return Q(low, scale), Q(high, scale) + + +def exp_negative(x, degree): + need(0 <= x < 1, 'alternating exponential range') + term = Q(1) + total = term + for j in range(1, degree + 1): + term *= -x / j + total += term + return total + + +@lru_cache(None) +def h_bounds(rank, a): + need(Q(0) < a < Q(1, 100), 'exponent domain') + lo, hi = log_bounds(rank) + return rank * exp_negative(a*hi, 31), rank * exp_negative(a*lo, 30) + + +def interval(profile, a): + a = Q(a) + lower = upper = Q(0) + for r, count in profile.items(): + need(type(r) is int and type(count) is int, 'integer signed profile') + lo, hi = h_bounds(r, a) + lower += count * (lo if count >= 0 else hi) + upper += count * (hi if count >= 0 else lo) + return lower, upper + + +def compact(bounds): + # Report outward intervals at 60 decimal places, retaining rational signs. + lo, hi = bounds + scale = 10**60 + low = (lo.numerator*scale)//lo.denominator + high = -((-hi.numerator*scale)//hi.denominator) + return {'lower': str(Q(low, scale)), 'upper': str(Q(high, scale))} diff --git a/research/retimed-t488-composition/owners/.gitignore b/research/retimed-t488-composition/owners/.gitignore new file mode 100644 index 0000000000..82951821ae --- /dev/null +++ b/research/retimed-t488-composition/owners/.gitignore @@ -0,0 +1,3 @@ +/evidence/run-*/ +/execution.log +__pycache__/ diff --git a/research/retimed-t488-composition/owners/AUDITOR-DIFF.patch b/research/retimed-t488-composition/owners/AUDITOR-DIFF.patch new file mode 100644 index 0000000000..0380504837 --- /dev/null +++ b/research/retimed-t488-composition/owners/AUDITOR-DIFF.patch @@ -0,0 +1,30 @@ +--- upstream/independent_literal.py ++++ independent_literal.py +@@ -16,7 +16,7 @@ + from collections import Counter + import gzip,hashlib,json,os,sys + import numpy as np +-R=Path(__file__).resolve().parent ++R=Path(__file__).resolve().parent/'upstream' + if not __debug__:raise SystemExit('unoptimized Python required') + for _key in ('OWNER_SOURCE_REPO','OWNER_LITERAL_DIR','OWNER_NATIVE_DIR','OWNER_AUDIT_OUTPUT'): + if not os.environ.get(_key):raise SystemExit('missing '+_key) +@@ -43,7 +43,8 @@ + source_pins=read(R/'SOURCE-PINS.json') + repo=Path(os.environ['OWNER_SOURCE_REPO']).resolve() + for rel,digest in source_pins['repo_files'].items():need(sha(repo/rel)==digest,'retained source pin '+rel) +-for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==source_pins['native_canonical'][tag]['canonical_sha256'],'actual native canonical pin') ++native_pins=read(Path(__file__).resolve().parent/'DERIVATION.json')['native_pins'] ++for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==native_pins[tag],'actual native canonical pin') + pins={str(p):sha(p) for p in paths} + expected=read(R/'EXPECTED.json');need(hashlib.sha256(gzip.decompress(paths[0].read_bytes())).hexdigest()==expected['payload_sha256'],'freshT488payload') + baseorder=read(R/'ORDER37.json')+[[s,r+37]for s,r in read(R/'T8-ORDER.json')]+[[s,r+45]for s,r in read(R/'T16-ORDER.json')] +@@ -88,7 +89,7 @@ + need(Counter(widths[pid])=={4:26,5:2,6:18,7:52,8:97,9:213},'actual native widths') + loc={int(k):v for k,v in w['local_profile'].items()} + need(L is None or L==loc,'common actual native bill');L=loc +-need(L=={1:2439,2:726,3:224,4:102,5:20,8:8},'new local bill') ++need(L=={1:2437,2:724,3:226,4:102,5:20,8:8},'new local bill') + bycall=np.stack([widths[D[tuple(call)]] for call in order]) + j=read(A/'FILL.json.gz');need(j['columns']==['time','helper','owner_replica','child','port','offset'] and j['dispatch_overrides']==[],'journal schema') + need(all(len(row)==6 and all(type(v) is int for v in row) for row in j['rows']),'literal integer roles') diff --git a/research/retimed-t488-composition/owners/DERIVATION.json b/research/retimed-t488-composition/owners/DERIVATION.json new file mode 100644 index 0000000000..8df035b6ff --- /dev/null +++ b/research/retimed-t488-composition/owners/DERIVATION.json @@ -0,0 +1,18 @@ +{ + "source_heads": { + "pr3633": "72c268f113368ea0387d188225e3f81ba6d6ef73", + "pr3642": "abc12f62e4fe9bfcb2e33c84703253c918668351" + }, + "native_pins": { + "base": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a", + "extra": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01" + }, + "predecessor_script_sha256": "8517c0d6c7cbe73438885135ac7fd9781dd5120113c9721002346dca603f5ed9", + "derived_script_sha256": "caa5eb4fff4908c0891c3ee41e7e6d71bf19bb710d1d7781164f10ce84bce769", + "changes": [ + "upstream directory", + "retimed immutable canonical pins", + "retimed local bill only" + ], + "predicates": "Every mathematical and rejection predicate retained; no gate removed." +} diff --git a/research/retimed-t488-composition/owners/NATIVE-BINDING.json b/research/retimed-t488-composition/owners/NATIVE-BINDING.json new file mode 100644 index 0000000000..4af3732e8e --- /dev/null +++ b/research/retimed-t488-composition/owners/NATIVE-BINDING.json @@ -0,0 +1,16 @@ +{ + "base": { + "pr3642_git_path": "research/staged-release-retiming-t530/owner-audit/native/checked-base/CANONICAL-WORD.json.gz", + "canonical_sha256": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a", + "payload_sha256": "73e81ff9dfc99013f8c74600fbbc30028566446cc4ab801d16dcafa1686286cd", + "fresh_cache_relative": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/CANONICAL-WORD.json.gz", + "fresh_container_sha256": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a" + }, + "extra": { + "pr3642_git_path": "research/staged-release-retiming-t530/owner-audit/native/checked-extra/CANONICAL-WORD.json.gz", + "canonical_sha256": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01", + "payload_sha256": "1a0bf1ab1ba8c04a403b4adc4e6ad8600f7a694ae6cb8e80a44b70dd00cfb7b8", + "fresh_cache_relative": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/CANONICAL-WORD.json.gz", + "fresh_container_sha256": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01" + } +} diff --git a/research/retimed-t488-composition/owners/README.md b/research/retimed-t488-composition/owners/README.md new file mode 100644 index 0000000000..f88cdd7c72 --- /dev/null +++ b/research/retimed-t488-composition/owners/README.md @@ -0,0 +1,49 @@ +# Fresh independent T488 owner and interface audit + +This bounded replay composes PR3633's T488 ownership with PR3642's retimed native words. It regenerates every literal helper role and independently derives source windows, physical-family exclusivity, capacities, chronological compact prefixes, idle ranks and the complete paid histogram. It does not rerun native/operator or complete multiplication admission. + +From any working directory, use Python 3.11 or newer with NumPy: + +```sh +python3 -B research/retimed-t488-composition/owners/run.py --out /path/to/fresh-owner-replay +``` + +The output directory must not exist. Keep it on the mounted research SSD in this workspace. To bind a separately regenerated native run, add `--fresh-native-cache /path/to/native/native-cache`. Both decoded canonical payloads must match uniquely. This comparison accepts equivalent gzip containers but requires equality of their complete decompressed payloads. The committed immutable native inputs retain exact container hashes as provenance. + +## Fresh execution + +The packaged command was run with the fresh `composition-run-1/native/native-cache`. It reconstructed **1,791,936 roles across 4,392 calls and 488 replicas**, then passed the independent audit and 14 predecessor guard checks. All five independent semantic rejection controls remain active. `evidence/FRESH-RUN.json` and `evidence/FRESH-RESULT.json` retain the executed receipts; `evidence/RECEIPT-PROVENANCE.json` records the original and public receipt hashes. Only local workspace path prefixes are normalized in those public receipts. + +The independently derived full profile is: + +```text +{1:10817496,2:3179808,3:1024434,4:447984,5:94794,8:35136,48:186782} +``` + +Physical stock is 437757. The local retimed bill is `{1:2437,2:724,3:226,4:102,5:20,8:8}`. Each authenticated provider has 408 helper roles, 91 zero buffers and width inventory `{4:26,5:2,6:18,7:52,8:97,9:213}`. The fresh independent audit derives the idle counts itself; no retained PASS receipt is used as an acceptance oracle. + +## Immutable inputs and minimal adaptation + +`upstream/` retains all 26 original PR3633 owner-package files, byte for byte, from commit `72c268f113368ea0387d188225e3f81ba6d6ef73`. `source/` contains the complete 13-file dependency closure authenticated by its original SOURCE-PINS.json, extracted from that same immutable Git commit. The unchanged deterministic producer and exact integral-network/primal checks run against this closure. No optimizer is run. + +`native/` contains both canonical words from PR3642 commit `abc12f62e4fe9bfcb2e33c84703253c918668351`, under `research/staged-release-retiming-t530/owner-audit/native`. NATIVE-BINDING.json records their equality with the separately checked composition native-cache payloads. These words are authenticated input data here; their separate operator proofs remain required. + +The original independent auditor remains untouched at `upstream/independent_literal.py`. Its derived copy differs in exactly three places, documented by AUDITOR-DIFF.patch and DERIVATION.json: + +1. Read preserved inputs from the explicit `upstream/` subdirectory. +2. Authenticate the two immutable retimed canonical hashes. +3. Require the retimed local bill rather than the predecessor local bill. + +All mathematical predicates, source checks, width/inventory gates, mass checks and rejection controls are preserved. The derived auditor imports neither the producer, a solver, an inherited owner checker nor a reconstructor. It scans the complete fresh literal journal itself. + +The runner first generates and authenticates the predecessor profile, then applies the actual canonical bill difference to every fresh call. It checks that proposed profile against the independently derived complete histogram. Generated PROVIDERS.json remains original reconstruction metadata; it is not advertised as a retimed full-admission input. The independent audit reads the actual retimed widths and bill directly from canonical frames. + +Output directories and temporary guard-test files are separate from immutable inputs. The runner verifies that its input files did not change during execution. Large generated literal journals are reproducible outputs and are excluded from publication by .gitignore; compact execution receipts are retained. + +## Credits and scope + +PR3633 contributes the T488 mixed ownership and deterministic literal construction; PR3642 contributes the two release retimings and checked canonical words. All predecessor credit, Apache-2.0 notices and proof notes remain in `upstream/UPSTREAM-SOURCE-CREDITS.md`, `upstream/UPSTREAM-SOURCE-NOTICE` and `upstream/UPSTREAM-PROOF.md`, including the inherited PR3605 and PR3133/PR3148 chains. This integration had substantial OpenAI Codex assistance. It does not claim independent human or formal-kernel review. + +## Open next questions + +The aggregate package must bind this full owner profile and these exact canonical payloads to the separately executed native/operator, precision, controller, global and outer checks. This command intentionally does not launch another full-admission process. Any change to the source template, journal, widths or canonical bill requires fresh corresponding checks. diff --git a/research/retimed-t488-composition/owners/SOURCE-CLOSURE.json b/research/retimed-t488-composition/owners/SOURCE-CLOSURE.json new file mode 100644 index 0000000000..353c9e7b2a --- /dev/null +++ b/research/retimed-t488-composition/owners/SOURCE-CLOSURE.json @@ -0,0 +1,18 @@ +{ + "source_head": "72c268f113368ea0387d188225e3f81ba6d6ef73", + "files": { + "research/coupled-carrier-cap740/cap_check.py": "c2a2ea7df9ef2f7c7ae2739435f4ac44f2c912d8e18fc9278c717958f258ee38", + "research/coupled-carrier-cap740/common.py": "8786495cbf808d950be1c42e42d0198e950e44167af80063d25fd186aafea534", + "research/coupled-carrier-cap740/vendor/PR3133-CAP.json": "e32f3ecd5e6594935583f80f643cf1930e8bc017e3c541025c335395a15cf19c", + "research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz": "68b8bae90144248774b1920cd27f9519caa3dc427704d8a9da6d4c491d912fc4", + "research/coupled-carrier-cap740/vendor/PR3133-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd", + "research/coupled-carrier-cap740/vendor/lift.py": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c", + "research/rank7-joint-endframes/allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "research/rank7-joint-endframes/allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461" + } +} diff --git a/research/retimed-t488-composition/owners/evidence/FRESH-RESULT.json b/research/retimed-t488-composition/owners/evidence/FRESH-RESULT.json new file mode 100644 index 0000000000..754c1fcf0b --- /dev/null +++ b/research/retimed-t488-composition/owners/evidence/FRESH-RESULT.json @@ -0,0 +1,41 @@ +{ + "calls": 4392, + "controls": [ + "duplicate helper", + "strict lower endpoint used as available", + "same-call family reused", + "unpaid chronological hole", + "one unpaid rank1 child" + ], + "idle": { + "1": 114192, + "3": 31842, + "5": 6954, + "48": 186782 + }, + "input_sha256": { + "$OWNER_PACKAGE/evidence/run-1/literal/DISPATCH.json": "15f187340cd32037492d4ce57820a41873dc015f4c689a8596d59c55f0077892", + "$OWNER_PACKAGE/evidence/run-1/literal/FILL.json.gz": "a93f1baa8d1a2eda216fff54708ef6a32586428cbb9ccf5f75fb053e290b7050", + "$OWNER_PACKAGE/evidence/run-1/literal/ORDER.json": "a4c8f6c96716da0a6d2057373bf3ec3ffb1c7f86bf2b263416dc1c00fee23555", + "$OWNER_PACKAGE/evidence/run-1/literal/PROFILE.json": "dbf357fb865fe24afecd047342bc477c4b50a720ebcd4fa2d4ec2722685ee528", + "$OWNER_PACKAGE/native/checked-base/CANONICAL-WORD.json.gz": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a", + "$OWNER_PACKAGE/native/checked-extra/CANONICAL-WORD.json.gz": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01", + "$OWNER_PACKAGE/source/research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "$OWNER_PACKAGE/source/research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e" + }, + "physical": 437757, + "profile": { + "1": 10817496, + "2": 3179808, + "3": 1024434, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + }, + "replicas": 488, + "roles": 1791936, + "scope": "Independent finite vectorized audit; no producer, solver, retained owner checker or reconstructor imports. Actual native frames are authenticated input data; their separate full operator proofs are required.", + "script_sha256": "caa5eb4fff4908c0891c3ee41e7e6d71bf19bb710d1d7781164f10ce84bce769", + "status": "PASS_INDEPENDENT_LITERAL_OWNER_WINDOWS_FAMILIES_PREFIXES_AND_INVOICE" +} diff --git a/research/retimed-t488-composition/owners/evidence/FRESH-RUN.json b/research/retimed-t488-composition/owners/evidence/FRESH-RUN.json new file mode 100644 index 0000000000..128442e708 --- /dev/null +++ b/research/retimed-t488-composition/owners/evidence/FRESH-RUN.json @@ -0,0 +1,52 @@ +{ + "calls": 4392, + "controls": [ + "duplicate helper", + "strict lower endpoint used as available", + "same-call family reused", + "unpaid chronological hole", + "one unpaid rank1 child" + ], + "fresh_independent_audit": true, + "fresh_literal_reconstruction": true, + "fresh_native_payload_matches": { + "base": "$FRESH_NATIVE_CACHE/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/CANONICAL-WORD.json.gz", + "extra": "$FRESH_NATIVE_CACHE/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/CANONICAL-WORD.json.gz" + }, + "idle": { + "1": 114192, + "3": 31842, + "48": 186782, + "5": 6954 + }, + "local_bill": { + "1": 2437, + "2": 724, + "3": 226, + "4": 102, + "5": 20, + "8": 8 + }, + "native_payload_pins": { + "base": "73e81ff9dfc99013f8c74600fbbc30028566446cc4ab801d16dcafa1686286cd", + "extra": "1a0bf1ab1ba8c04a403b4adc4e6ad8600f7a694ae6cb8e80a44b70dd00cfb7b8" + }, + "package_inputs_unchanged": true, + "physical": 437757, + "predecessor_guard_count": 14, + "profile": { + "1": 10817496, + "2": 3179808, + "3": 1024434, + "4": 447984, + "48": 186782, + "5": 94794, + "8": 35136 + }, + "python": "3.12.14 (main, Aug 12 2026, 13:57:54) [Clang 21.0.0 (clang-2100.1.1.101)]", + "replicas": 488, + "roles": 1791936, + "scope": "Bounded owner/interface audit derives windows,families,prefixes,idle and full profile from freshly generated literal rows and pinned retimed frames. Separate native/operator/full admission remains required.", + "seconds": 33.50458479102235, + "status": "PASS_FRESH_T488_RETIMED_LITERAL_OWNER_AUDIT" +} diff --git a/research/retimed-t488-composition/owners/evidence/RECEIPT-PROVENANCE.json b/research/retimed-t488-composition/owners/evidence/RECEIPT-PROVENANCE.json new file mode 100644 index 0000000000..468b4cbb1b --- /dev/null +++ b/research/retimed-t488-composition/owners/evidence/RECEIPT-PROVENANCE.json @@ -0,0 +1,12 @@ +{ + "RUN.json": { + "original_sha256": "10d83c34347e011a7fabcd1dd880a624a90fe3409a255501afafa2ce07b4a83d", + "public_sha256": "fbab12bf1bc2e5afdb907cdb82b6645670daf803182bc4af2fd48df330e6508d", + "normalization": "Local absolute owner-package and fresh-native-cache prefixes only" + }, + "RESULT.json": { + "original_sha256": "fbab71f4d7373a204a1ef02808ea18de298e94afc764121cbcced0cf028bb637", + "public_sha256": "b3a1d95e89206e875c06ee2bca535d772dd55bab114f45cb6041606c00ff5c87", + "normalization": "Local absolute owner-package and fresh-native-cache prefixes only" + } +} diff --git a/research/retimed-t488-composition/owners/evidence/independent-audit.log b/research/retimed-t488-composition/owners/evidence/independent-audit.log new file mode 100644 index 0000000000..f217cc8033 --- /dev/null +++ b/research/retimed-t488-composition/owners/evidence/independent-audit.log @@ -0,0 +1,19 @@ +{ + "status": "PASS_INDEPENDENT_LITERAL_OWNER_WINDOWS_FAMILIES_PREFIXES_AND_INVOICE", + "roles": 1791936, + "idle": { + "1": 114192, + "3": 31842, + "5": 6954, + "48": 186782 + }, + "profile": { + "1": 10817496, + "2": 3179808, + "3": 1024434, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + } +} diff --git a/research/retimed-t488-composition/owners/evidence/materialize.log b/research/retimed-t488-composition/owners/evidence/materialize.log new file mode 100644 index 0000000000..6f99f73ab8 --- /dev/null +++ b/research/retimed-t488-composition/owners/evidence/materialize.log @@ -0,0 +1,15 @@ +PORTABLE_CALL_DECOMPOSITION 0 seconds 0.02 +PORTABLE_CALL_DECOMPOSITION 40 seconds 1.11 +PORTABLE_CALL_DECOMPOSITION 80 seconds 2.19 +PORTABLE_CALL_DECOMPOSITION 120 seconds 3.15 +PORTABLE_CALL_DECOMPOSITION 160 seconds 4.45 +PORTABLE_CALL_DECOMPOSITION 200 seconds 5.78 +PORTABLE_CALL_DECOMPOSITION 240 seconds 7.05 +PORTABLE_CALL_DECOMPOSITION 280 seconds 8.11 +PORTABLE_CALL_DECOMPOSITION 320 seconds 9.41 +PORTABLE_CALL_DECOMPOSITION 360 seconds 10.65 +PORTABLE_CALL_DECOMPOSITION 400 seconds 11.77 +PORTABLE_CALL_DECOMPOSITION 440 seconds 12.86 +PORTABLE_CALL_DECOMPOSITION 480 seconds 13.74 +PORTABLE_CALL_DECOMPOSITION 520 seconds 14.82 +PORTABLE_REPLAY_PASS {"rows": 1791936, "sha256": "a93f1baa8d1a2eda216fff54708ef6a32586428cbb9ccf5f75fb053e290b7050", "payload_sha256": "20662cc64df34cab409fdf31ed0f0222462530922a01308a46964d661d2374cf"} diff --git a/research/retimed-t488-composition/owners/evidence/owner-guards.log b/research/retimed-t488-composition/owners/evidence/owner-guards.log new file mode 100644 index 0000000000..c02a001670 --- /dev/null +++ b/research/retimed-t488-composition/owners/evidence/owner-guards.log @@ -0,0 +1 @@ +PASS_OWNER_GUARDS 14 diff --git a/research/retimed-t488-composition/owners/execution.log b/research/retimed-t488-composition/owners/execution.log new file mode 100644 index 0000000000..62fbb208aa --- /dev/null +++ b/research/retimed-t488-composition/owners/execution.log @@ -0,0 +1,52 @@ +{ + "status": "PASS_FRESH_T488_RETIMED_LITERAL_OWNER_AUDIT", + "seconds": 33.50458479102235, + "python": "3.12.14 (main, Aug 12 2026, 13:57:54) [Clang 21.0.0 (clang-2100.1.1.101)]", + "fresh_literal_reconstruction": true, + "fresh_independent_audit": true, + "roles": 1791936, + "calls": 4392, + "replicas": 488, + "physical": 437757, + "profile": { + "1": 10817496, + "2": 3179808, + "3": 1024434, + "4": 447984, + "5": 94794, + "8": 35136, + "48": 186782 + }, + "idle": { + "1": 114192, + "3": 31842, + "5": 6954, + "48": 186782 + }, + "local_bill": { + "1": 2437, + "2": 724, + "3": 226, + "4": 102, + "5": 20, + "8": 8 + }, + "controls": [ + "duplicate helper", + "strict lower endpoint used as available", + "same-call family reused", + "unpaid chronological hole", + "one unpaid rank1 child" + ], + "predecessor_guard_count": 14, + "fresh_native_payload_matches": { + "base": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/native/native-cache/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/CANONICAL-WORD.json.gz", + "extra": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/kernel112/primary-integration/composition-run-1/native/native-cache/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/CANONICAL-WORD.json.gz" + }, + "native_payload_pins": { + "base": "73e81ff9dfc99013f8c74600fbbc30028566446cc4ab801d16dcafa1686286cd", + "extra": "1a0bf1ab1ba8c04a403b4adc4e6ad8600f7a694ae6cb8e80a44b70dd00cfb7b8" + }, + "package_inputs_unchanged": true, + "scope": "Bounded owner/interface audit derives windows,families,prefixes,idle and full profile from freshly generated literal rows and pinned retimed frames. Separate native/operator/full admission remains required." +} diff --git a/research/retimed-t488-composition/owners/independent_literal.py b/research/retimed-t488-composition/owners/independent_literal.py new file mode 100644 index 0000000000..403a9cd104 --- /dev/null +++ b/research/retimed-t488-composition/owners/independent_literal.py @@ -0,0 +1,129 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Path-adapted copy of the parent independent owner audit. +Original SHA256 1001cb1c8b4ee1f93c23b58b094565ec1b3931eee0ea091a23504696e380be9e. +Filesystem/source authentication and output paths adapted; mathematical predicates retained. +""" +"""Independent vectorized audit of the literal staged-pair owner journal. + +No optimizer, producer, inherited owner checker or reconstructor is imported. +Uses the source execution template and the actual checked native frame tables. +""" +from pathlib import Path +from collections import Counter +import gzip,hashlib,json,os,sys +import numpy as np +R=Path(__file__).resolve().parent/'upstream' +if not __debug__:raise SystemExit('unoptimized Python required') +for _key in ('OWNER_SOURCE_REPO','OWNER_LITERAL_DIR','OWNER_NATIVE_DIR','OWNER_AUDIT_OUTPUT'): + if not os.environ.get(_key):raise SystemExit('missing '+_key) +A=Path(os.environ['OWNER_LITERAL_DIR']).resolve() +NATIVE=Path(os.environ['OWNER_NATIVE_DIR']).resolve() +S=Path(os.environ['OWNER_SOURCE_REPO']).resolve()/'research/rank7-joint-endframes/allocation/vendor' +def need(v,m): + if not v:raise ValueError(m) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def rank(v): + piv={} + for q in v: + while q: + h=q.bit_length() + if h in piv:q^=piv[h] + else:piv[h]=q;break + return len(piv) +for rel,digest in read(R/'ARTIFACTS.json').items(): + f=R/rel;need(f.is_file() and not f.is_symlink() and sha(f)==digest,'frozen audit artifact '+rel) +paths=[A/n for n in ('FILL.json.gz','ORDER.json','DISPATCH.json','PROFILE.json')]+[S/'PLAN.json.gz',S/'TEMPLATE.json.gz'] +paths += [NATIVE/f'checked-{p}/CANONICAL-WORD.json.gz' for p in ('base','extra')] +source_pins=read(R/'SOURCE-PINS.json') +repo=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +for rel,digest in source_pins['repo_files'].items():need(sha(repo/rel)==digest,'retained source pin '+rel) +native_pins=read(Path(__file__).resolve().parent/'DERIVATION.json')['native_pins'] +for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==native_pins[tag],'actual native canonical pin') +pins={str(p):sha(p) for p in paths} +expected=read(R/'EXPECTED.json');need(hashlib.sha256(gzip.decompress(paths[0].read_bytes())).hexdigest()==expected['payload_sha256'],'freshT488payload') +baseorder=read(R/'ORDER37.json')+[[s,r+37]for s,r in read(R/'T8-ORDER.json')]+[[s,r+45]for s,r in read(R/'T16-ORDER.json')] +need(read(paths[1])==[[s,r+61*cp]for s,r in baseorder for cp in range(8)],'exactmixedsourceclock') +basedispatch={(s,r):p for s,r,p in read(R/'DISPATCH37.json')};basedispatch.update({(s,r+37):p for s,r,p in read(R/'T8-DISPATCH.json')});basedispatch.update({(s,r+45):p for s,r,p in read(R/'T16-DISPATCH.json')}) +need(read(paths[2])==[[s,r+61*cp,basedispatch[s,r]]for s,r in baseorder for cp in range(8)],'exactsourceproviderdispatch') +order=read(paths[1]);dispatch=read(paths[2]);profile={int(k):v for k,v in read(paths[3]).items()};plan=read(paths[4]);template=read(paths[5]) +T=488;N=9*T +need(len(order)==N and len(set(map(tuple,order)))==N,'call coverage') +clock={tuple(call):t for t,call in enumerate(order)} +need(set(clock)=={(s,r) for s in range(9) for r in range(T)},'exact source calls') +need(all([clock[s,r] for s in range(9)]==sorted(clock[s,r] for s in range(9)) for r in range(T)),'per-replica order') +D={(s,r):p for s,r,p in dispatch};need(len(dispatch)==N and set(D)==set(clock),'dispatch coverage') +need(Counter(D.values())=={'extra': 1680, 'gauge44': 2712},'provider count') +# Reconstruct source windows per replica from the actual source event sequence. +children={x['child']:x['rank'] for x in template['idle_children']};K=max(children)+1 +cap=np.zeros((T,K),dtype=np.int64);lo=np.full((T,K),N,dtype=np.int64);hi=np.full((T,K),-2,dtype=np.int64) +local_pair={x['stage']:x['pair'] for x in template['recipe'] if x['kind']=='local'} +for r in range(T): + touched={};t=None + for ev in template['execution_schedule']: + kind=ev['kind'] + if kind in ('bank_padding_cover_sweep','translate_every_live_family'):continue + if kind=='local_cover_sweep': + t=clock[ev['stage'],r];touched[local_pair[ev['stage']]]=t + elif kind=='bridge': + need(t is not None,'bridge source');touched[ev['src']]=t;touched[ev['dst']]=t + elif kind=='idle_cover_sweep': + need(t is not None,'idle source') + for c in ev['child_indices']: + if c in children: + need(cap[r,c]==0,'unique source child');cap[r,c]=children[c];lo[r,c]=touched.get(ev['pair'],-1);hi[r,c]=t + else:need(kind in ('terminal_Y_translations','terminal'),'known source event') +need(np.all(cap[:,list(children)]>0),'all source windows') +fam=np.full(K,-1,np.int64) +for c in children:fam[c]=2*plan['pairs'][str(c)]+plan['sides'][str(c)] +widths={};L=None +for tag,pid in [('base','gauge44'),('extra','extra')]: + w=read(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz') + need(w['R']==408 and len(w['zero_buffers'])==91,'native helper stock') + widths[pid]=np.array([rank(w['frames'][w['final'][224+h]])-rank(w['frames'][w['start'][224+h]]) for h in range(408)],dtype=np.int64) + need(Counter(widths[pid])=={4:26,5:2,6:18,7:52,8:97,9:213},'actual native widths') + loc={int(k):v for k,v in w['local_profile'].items()} + need(L is None or L==loc,'common actual native bill');L=loc +need(L=={1:2437,2:724,3:226,4:102,5:20,8:8},'new local bill') +bycall=np.stack([widths[D[tuple(call)]] for call in order]) +j=read(A/'FILL.json.gz');need(j['columns']==['time','helper','owner_replica','child','port','offset'] and j['dispatch_overrides']==[],'journal schema') +need(all(len(row)==6 and all(type(v) is int for v in row) for row in j['rows']),'literal integer roles') +rows=np.array(j['rows'],dtype=np.int64);del j +need(rows.shape==(N*408,6),'literal role shape') +need(np.array_equal(rows[:,0],np.repeat(np.arange(N),408)) and np.array_equal(rows[:,1],np.tile(np.arange(408),N)),'complete literal ordered helper identities') +t,h,o,c,p,z=rows.T +need(np.all((o>=0)&(o=0)&(c=0)&(p<112)),'owner bounds') +need(np.all(cap[o,c]>0),'declared source child') +need(np.all((lo[o,c]=0)&(z+w<=cap[o,c])),'actual widths and capacity') +binid=(o*K+c)*112+p +idx=np.lexsort((t,binid));bins=binid[idx];ws=w[idx];starts=np.r_[True,bins[1:]!=bins[:-1]] +cs=np.cumsum(ws,dtype=np.int64)-ws;baseline=np.maximum.accumulate(np.where(starts,cs,0));expected=cs-baseline +need(np.array_equal(z[idx],expected),'every chronological pending mask is a compact prefix') +used=np.zeros(T*K*112,np.int64);np.add.at(used,binid,w) +allcap=np.repeat(cap.reshape(-1),112);valid=allcap>0 +need(np.all(used[~valid]==0) and np.all(used<=allcap),'full used-bin mass') +idle=Counter(map(int,(allcap-used)[valid]));idle.pop(0,None) +H=Counter({r:n*N for r,n in L.items()});H.update(idle) +need(dict(H)==profile and sum(r*n for r,n in H.items())==65088*T,'independent complete histogram') +# Small semantic predicates test each independent gate on actual changed inputs. +controls=[] +def reject(name,test): + need(not test(), 'control accepted '+name);controls.append(name) +reject('duplicate helper',lambda: np.array_equal(np.r_[rows[0,1],rows[:-1,1]],np.tile(np.arange(408),N))) +reject('strict lower endpoint used as available',lambda: bool(lo[o[0],c[0]]0 for v in total.values()),'positive retimed histogram');(literal/'PROFILE.json').write_text(json.dumps(dict(sorted(total.items())),indent=2)+'\n') + env.update(OWNER_LITERAL_DIR=str(literal),OWNER_NATIVE_DIR=str(HERE/'native'),OWNER_AUDIT_OUTPUT=str(out/'RESULT.json')) + run(HERE/'independent_literal.py',[],'independent-audit.log');result=read(out/'RESULT.json');need(result['profile']=={str(k):v for k,v in sorted(total.items())},'independent fresh histogram matches generated bill delta');need(len(result['controls'])==5,'five semantic rejection controls') + run(HERE/'upstream/test_owner_guards.py',[],'owner-guards.log');need('PASS_OWNER_GUARDS 14' in (out/'owner-guards.log').read_text(),'14 predecessor guards') + need(snapshot()==before,'package input drift') + receipt={'status':'PASS_FRESH_T488_RETIMED_LITERAL_OWNER_AUDIT','seconds':time.monotonic()-start,'python':sys.version,'fresh_literal_reconstruction':True,'fresh_independent_audit':True,'roles':result['roles'],'calls':calls,'replicas':result['replicas'],'physical':result['physical'],'profile':result['profile'],'idle':result['idle'],'local_bill':newlocal,'controls':result['controls'],'predecessor_guard_count':14,'fresh_native_payload_matches':fresh_matches,'native_payload_pins':{t:binding[t]['payload_sha256'] for t in binding},'package_inputs_unchanged':True,'scope':'Bounded owner/interface audit derives windows,families,prefixes,idle and full profile from freshly generated literal rows and pinned retimed frames. Separate native/operator/full admission remains required.'} + (out/'RUN.json').write_text(json.dumps(receipt,indent=2,sort_keys=True)+'\n');print(json.dumps(receipt,indent=2)) +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/cap_check.py b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/cap_check.py new file mode 100644 index 0000000000..8e06e8fadd --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/cap_check.py @@ -0,0 +1,215 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Exact PR3133 fixed-inventory cap and replica-divisibility certificate. + +Adapted by Jeremy Diviney with OpenAI Codex assistance from Nick Petalas's +research/rank7-cap740/cap_proof.py (PR3024). Changes: PR3133 inventory and +local bill, residue coefficient 1323 instead of 1341; old exchange proof omitted. +The pattern catalogue and exact interval-dual argument are retained. + +The caller must authenticate the root arithmetic module and bind `certificate` +to the words' actual local profile and width inventory. This module checks the +fixed chronology-free pattern relaxation. It does not prove chronological +feasibility or any scalar/native/physical/outer admission obligation. +""" + +from fractions import Fraction +from itertools import product +from math import gcd + +Q = Fraction +WIDTHS = (4, 5, 6, 7, 8, 9) +CAPS = (8, 16, 32, 48) +BINS = (672, 448, 448, 448) +INVENTORY = (26, 2, 18, 50, 99, 213) +LOCAL = {1: 2433, 2: 724, 3: 228, 4: 102, 5: 20, 8: 8} +Q_ROW = (-3, -6, -12, 0, 0, 0, 1, 2, 3, 4) +TIGHT = ( + (8, (8,)), + (16, (8, 8)), + (16, (7, 9)), + (32, (9, 9, 9)), + (32, (8, 8, 8, 8)), + (32, (7, 8, 8, 9)), + (32, (7, 7, 9, 9)), + (32, (6, 8, 9, 9)), + (32, (5, 9, 9, 9)), + (32, (4, 9, 9, 9)), + (48, ()), + (48, (9, 9, 9, 9, 9)), +) + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def patterns(): + """All 2,551 capacity-feasible count vectors; loops have fixed finite bounds.""" + result = [] + for capacity in CAPS: + for counts in product(*(range(capacity // width + 1) for width in WIDTHS)): + idle = capacity - sum(w * n for w, n in zip(WIDTHS, counts, strict=True)) + if idle >= 0: + result.append((capacity, counts, idle)) + need(len(result) == 2551, "changed pattern domain") + return result + + +def column(pattern): + capacity, counts, _ = pattern + return tuple(int(capacity == cap) for cap in CAPS) + counts + + +def inverse(matrix): + """Gauss-Jordan inversion over Q, explicitly restricted to the 10-row model.""" + need(len(matrix) == 10 and all(len(row) == 10 for row in matrix), "matrix shape") + rows = [ + [Q(value) for value in row] + [Q(i == j) for j in range(10)] + for i, row in enumerate(matrix) + ] + for col in range(10): + pivot = next((r for r in range(col, 10) if rows[r][col]), None) + need(pivot is not None, "singular basis") + rows[col], rows[pivot] = rows[pivot], rows[col] + divisor = rows[col][col] + rows[col] = [value / divisor for value in rows[col]] + for r in range(10): + if r != col: + multiple = rows[r][col] + rows[r] = [ + a - multiple * b for a, b in zip(rows[r], rows[col], strict=True) + ] + return [row[10:] for row in rows] + + +def basis_data(certificate, catalogue): + need( + set(certificate["inventory_per_call"]) == set(map(str, WIDTHS)), + "inventory keys", + ) + need( + tuple(Q(certificate["inventory_per_call"][str(w)]) for w in WIDTHS) + == INVENTORY, + "wrong inventory", + ) + need( + {int(r): Q(n) for r, n in certificate["local_per_call"].items()} == LOCAL, + "wrong local profile", + ) + entries = certificate["basis_patterns"] + need(len(entries) == 10, "wrong basis size") + basis, amounts = [], [] + for entry in entries: + widths = entry["widths"] + need(len(widths) <= 12 and all(w in WIDTHS for w in widths), "basis widths") + pattern = ( + entry["capacity"], + tuple(widths.count(w) for w in WIDTHS), + entry["capacity"] - sum(widths), + ) + need(pattern in catalogue, "infeasible basis pattern") + basis.append(pattern) + amounts.append(Q(entry["count_per_replica"])) + need(len(set(basis)) == 10 and all(x >= 0 for x in amounts), "basis feasibility") + columns = [column(p) for p in basis] + matrix = [[columns[k][r] for k in range(10)] for r in range(10)] + rhs = BINS + tuple(9 * n for n in INVENTORY) + need( + all( + sum(matrix[r][k] * amounts[k] for k in range(10)) == rhs[r] + for r in range(10) + ), + "basis does not supply complete counts", + ) + return basis, amounts, inverse(matrix), rhs + + +def reduced_cost(pattern, basis, basis_inverse): + """Exact coefficients of H_r in c_p - a_p^T B^-T c_B.""" + coefficients = {pattern[2]: Q(1)} if pattern[2] else {} + a = column(pattern) + for k, basic in enumerate(basis): + if basic[2]: + amount = -sum(a[j] * basis_inverse[k][j] for j in range(10)) + coefficients[basic[2]] = coefficients.get(basic[2], Q(0)) + amount + return {rank: value for rank, value in coefficients.items() if value} + + +def check_invariant(tight, rhs, amounts): + """A residue identity isolates the only idle-rank-3 tight pattern.""" + for pattern in tight: + value = sum(a * b for a, b in zip(Q_ROW, column(pattern), strict=True)) + is_five_nines = pattern[0] == 48 and pattern[1] == (0, 0, 0, 0, 0, 5) + need(value == 20 * is_five_nines, "tight-pattern invariant failed") + coefficient = sum(a * b for a, b in zip(Q_ROW, rhs, strict=True)) + need(coefficient == 1323 and gcd(coefficient, 20) == 1, "residue coefficient") + need( + all((20 * x).denominator == 1 for x in amounts), + "20 replicas do not integralize the displayed basis", + ) + return { + "identity": "20*N_[9,9,9,9,9]@48 = 1323*T", + "cap_requires_T_multiple_of": 20, + "first_multiple_of_74": 74 * 20 // gcd(74, 20), + "scope": "Pattern integrality; chronological sufficiency is not asserted.", + } + + +def verify_cap(certificate, root_tools): + """Recertify the complete relaxation and strictness on the entire root bracket.""" + catalogue = patterns() + basis, amounts, basis_inverse, rhs = basis_data(certificate, catalogue) + lower, upper = Q(certificate["cap_lower"]), Q(certificate["cap_upper"]) + need( + 0 < lower < upper <= Q(1, 100) and upper - lower <= Q(1, 10**25), "cap bracket" + ) + profile = {rank: Q(9 * amount) for rank, amount in LOCAL.items()} + idle = {} + for pattern, amount in zip(basis, amounts, strict=True): + if pattern[2]: + profile[pattern[2]] = profile.get(pattern[2], Q(0)) + amount + idle[pattern[2]] = idle.get(pattern[2], Q(0)) + amount + need( + {int(r): Q(n) for r, n in certificate["idle_per_replica"].items()} == idle, + "stored idle differs from primal basis", + ) + need(sum(r * n for r, n in profile.items()) == 65088, "rank mass") + need( + root_tools.moment(profile, lower, 896)[1] + < 1 + < root_tools.moment(profile, upper, 896)[0], + "unproved cap root bracket", + ) + intervals = { + rank: (root_tools.H(rank, lower)[0], root_tools.H(rank, upper)[1]) + for rank in range(1, 49) + } + tight, slacks = [], [] + for pattern in catalogue: + coefficients = reduced_cost(pattern, basis, basis_inverse) + if not coefficients: + tight.append(pattern) + else: + slack = sum( + v * intervals[r][0 if v > 0 else 1] for r, v in coefficients.items() + ) + need(slack > 0, "reduced cost is not strictly positive on cap bracket") + slacks.append(slack) + named = { + (cap, tuple(w for w, n in zip(WIDTHS, counts, strict=True) for _ in range(n))) + for cap, counts, _ in tight + } + need(named == set(TIGHT) and len(slacks) == 2539, "tight domain differs") + invariant = check_invariant(tight, rhs, amounts) + return { + "idle_per_replica": {str(r): str(n) for r, n in sorted(idle.items())}, + "patterns": len(catalogue), + "strict_patterns": len(slacks), + "tight_patterns": len(tight), + "minimum_slack_lower": str(min(slacks)), + "cap_lower": str(lower), + "cap_upper": str(upper), + "invariant": invariant, + } + diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/common.py b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/common.py new file mode 100644 index 0000000000..deb060b34f --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/common.py @@ -0,0 +1,90 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Pinned inputs shared by the new allocation, materializer and finite checks. + +Jeremy Diviney, with substantial OpenAI Codex assistance. Mathematical engines +are the exact credited predecessor bytes identified in VENDOR/SOURCE-PINS. +""" +import collections +import gzip +import hashlib +import json +from pathlib import Path +import types + +P = Path(__file__).resolve().parent +ROOT = P.parents[1] +MAIN = ROOT / 'research/rank7-joint-endframes' +HEAD = '51eb9c4ee9e4722010d308aa3309e039d3940cc2' +LOCAL = {1: 2433, 2: 724, 3: 228, 4: 102, 5: 20, 8: 8} +INVENTORY = {4: 26, 5: 2, 6: 18, 7: 50, 8: 99, 9: 213} +IDLE = {1: 173160, 3: 48951, 5: 13875, 48: 282569} +PROFILE = {1: 16376940, 2: 4821840, 3: 1567431, 4: 679320, + 5: 147075, 8: 53280, 48: 282569} +DELTA = {1: 20, 3: 21, 5: -25, 39: -10, 48: 9} + + +def need(ok, why): + if not ok: + raise ValueError(why) + + +def sha(path): + with path.open('rb') as stream: + return hashlib.file_digest(stream, 'sha256').hexdigest() + + +def read(path): + raw = path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + + +def load(path, name): + module = types.ModuleType(name) + module.__file__ = str(path) + exec(compile(path.read_bytes(), str(path), 'exec'), module.__dict__) + return module + + +def authenticate(): + paths = list(P.rglob('*')) + need(not any(path.is_symlink() for path in paths), 'regular package files') + actual = {path.relative_to(P).as_posix(): sha(path) + for path in paths if path.is_file() and path != P/'MANIFEST.json'} + need(actual == read(P/'MANIFEST.json'), 'complete published package inventory') + for path, expected in read(P/'SOURCE-PINS.json').items(): + need(sha(ROOT/path) == expected, 'external source ' + path) + for record in read(P/'VENDOR.json'): + need(sha(P/record['path']) == record['sha256'], 'vendor source ' + record['path']) + + +def context(): + c = types.SimpleNamespace() + c.lift = load(P/'vendor/lift.py', 'retained_lift') + c.owner = load(MAIN/'allocation/vendor/independent_owners.py', 'retained_owners') + c.cap = load(P/'cap_check.py', 'adapted_cap') + c.base = read(P/'vendor/PR3133-FILL.json.gz')['rows'] + c.order = read(MAIN/'allocation/ORDER.json') + c.dispatch = {(s, r): key for s, r, key in read(MAIN/'allocation/DISPATCH.json')} + c.providers = read(P/'vendor/PR3133-PROVIDERS.json') + c.widths = [c.providers[c.dispatch[tuple(call)]]['widths'] for call in c.order] + c.plan = read(MAIN/'allocation/vendor/PLAN.json.gz') + c.template = read(MAIN/'allocation/vendor/TEMPLATE.json.gz') + c.win = c.owner.windows(c.template, c.order, 74) + c.families = {int(child): 2*pair+c.plan['sides'][child] + for child, pair in c.plan['pairs'].items()} + c.bins = collections.defaultdict(list) + for index, row in enumerate(c.base): + c.bins[tuple(row[2:5])].append(index) + c.pattern = lambda key: (c.win[key[:2]][0], tuple(sorted( + c.widths[c.base[i][0]][c.base[i][1]] for i in c.bins[key]))) + return c + + +def witness(c): + journal = read(P/'EXCHANGE.json') + need(journal['base_head'] == HEAD, 'journal source head') + need(journal['base_fill_sha256'] == sha(P/'vendor/PR3133-FILL.json.gz'), 'journal source fill') + need(len(journal['edits']) == 145, 'complete new exchange') + edits = c.lift.patch(c.base, journal) + order, dispatch = c.lift.chronology(c.order, c.dispatch) + return c.lift.Rows(c.base, edits), order, dispatch, edits diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-CAP.json b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-CAP.json new file mode 100644 index 0000000000..804edbf265 --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-CAP.json @@ -0,0 +1,124 @@ +{ + "basis_patterns": [ + { + "capacity": 8, + "count_per_replica": "672", + "widths": [ + 8 + ] + }, + { + "capacity": 32, + "count_per_replica": "61/4", + "widths": [ + 7, + 8, + 8, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "234", + "widths": [ + 4, + 9, + 9, + 9 + ] + }, + { + "capacity": 48, + "count_per_replica": "1323/20", + "widths": [ + 9, + 9, + 9, + 9, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "75/4", + "widths": [ + 9, + 9, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "162", + "widths": [ + 6, + 8, + 9, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "18", + "widths": [ + 5, + 9, + 9, + 9 + ] + }, + { + "capacity": 16, + "count_per_replica": "53/4", + "widths": [ + 8, + 8 + ] + }, + { + "capacity": 16, + "count_per_replica": "1739/4", + "widths": [ + 7, + 9 + ] + }, + { + "capacity": 48, + "count_per_replica": "7637/20", + "widths": [] + } + ], + "cap_lower": "17297774946785970118869/10000000000000000000000000", + "cap_lower_decimal": "0.0017297774946785970118869", + "cap_upper": "1729777494678597011887/1000000000000000000000000", + "cap_upper_decimal": "0.0017297774946785970118870", + "idle_per_replica": { + "1": "234", + "3": "1323/20", + "48": "7637/20", + "5": "75/4" + }, + "inventory_per_call": { + "4": 26, + "5": 2, + "6": 18, + "7": 50, + "8": 99, + "9": 213 + }, + "local_per_call": { + "1": 2433, + "2": 724, + "3": 228, + "4": 102, + "5": 20, + "8": 8 + }, + "patterns": 2551, + "rank_mass_identity": true, + "scenario": "final words of PR2979 plus declared restore skips (R1_E42, R2_E7) and coupled 586/438, 588/440 carrier folds", + "status": "PASS_EXACT_RELAXATION_CAP", + "strict_patterns": 2539, + "tight_patterns": 12 +} diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md new file mode 100644 index 0000000000..24f00912d4 --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md @@ -0,0 +1,19 @@ +# Credits + +- **PR #2908, Jeremy Diviney**: the paired input/output extraction, its compensation rule `C*S`, the exact two-sided certificate (`structure.py`, vendored unchanged) and the closed-adapter admission chain. +- **PR #2917, Mason Hale**: the nine paired extractions and 82-endpoint words under PR2942, the refit/compose producer model that stage 2 follows, the T74 chronology (ORDER/DISPATCH), the allocation checker, moment auditor, extension stage and adapter derivation reused here. +- **PR #2957 / #2948 / #2966, Jeremy Kothe (jeremykothe2)**: the fourteen declared exactness-preserving gate rewrites in five classes (R-retime, A3779-cut-start-read, PM-carrier-lender-entry, B-carrier-retime, A-commuting-swap) and their pure applier (`vendor/declared_rewrites.py`, vendored unchanged); stage 3 composes exactly these rewrites onto this package's stage-2 word (`data/REWRITES-2957.json`, re-addressed with exact preimages). PR2966 composed the same rewrites onto our PR2942 words. +- **PR #2969, Dugongue**: the PR2942 + PR2957 composition at T370 and its cap-level headline nomination, this package's comparator and moment baseline (`allocation/baseline/`). Our stage 3 composes the same fourteen rewrites, here onto the stage-2 word. +- **PR #2918 (research/helper408-rank7-pairing), RossRichardson**: the fixed-cut rank-seven obstruction for helper408; this package's census of fresh rank-7 extractions reproduces it exactly and is consistent with it. +- **PR #2894 / #2833, Jeremy Kothe**: the preload re-synthesis supplier, the frame accounting and inverse-reverse cleanup (`vendor/preload_move.py`), the source materializer and the inherited supplier lineage. +- **PR #2857 / #2848, Yiyang Lu (Lyy-iiis)**: the shared-kernel words, the staged native/overlay tooling and the chronological flow model and realization (edge colouring) used to construct the allocation; PR2843 (Marius-Paul Dumitrean) is that flow model's starting point. +- **PR #2863 / #2839, Dugongue**: the packing lineage and the PR2839 owner engine. +- **Tekalign**: the independent owner/chronology checker (`allocation/vendor/independent_owners.py`) and admission tooling. +- **icekylinx**: the exact free-operator auditor retained as `vendor/audit_local.py` (PR2833). +- **themilkman216**: the observation that a cap-level allocation of these inventories needs a T whose basic counts are integral, which the allocation's degenerate-face step builds on. +- **Gareth Davidson (bitplane), PR #1995 / #2013**: the fixed-word terminal-subspace bounds that frame stage 1's scope; earlier rank-seven helper ends on other words are in `research/complex-rank7-end-pair`, `research/k8-rank7-composition` and the PR1090/PR1104 lineage (credited there). +- **PR #2930 / #2942, Marius-Paul Dumitrean**: the cap allocation of PR2917's words, the four normal-45 extractions under these words, the relaxation tools and the overlay/producer conventions reused here. +- **PR #2979, Marius-Paul Dumitrean (with substantial AI assistance from Anthropic Claude via Claude Code)**: the codimension-2 census on paired-extraction words, the joint end-frame lowering of 22 restored helpers in five groups (stage 1), the five further extractions it makes profitable (stage 2), the exact composition with PR2957's rewrites (stage 3), the producer and local verification for all three stages, the overlay stage `rank7-joint-endframes` with its rebuild guards, the adapter generalization to six width classes, the literal T74 allocation of the changed inventory, its relaxation certificates and recorded gap, and the complete fresh replay. +- **PR #3015, Jeremy Kothe (jeremykothe2)**: the declared literal edit stage (`edits/`, `tools/build_edits.py`) with its independent review (`edits/edits_review.py`), and edit R1 on PR #2979's restore section (carrier 61 for register 63). +- **PR #3042, dcharb78 (with AI assistance)**: the six restore carrier/pivot skips (`R1_E42` at `restore[162:188]`, `26 -> 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz new file mode 100644 index 0000000000..92b49b42b8 Binary files /dev/null and b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz differ diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-NOTICE b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json new file mode 100644 index 0000000000..0b23436750 --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json @@ -0,0 +1,842 @@ +{ + "extra": { + "actual_paid_profile": { + "1": 2433, + "2": 724, + "3": 228, + "4": 102, + "5": 20, + "8": 8 + }, + "widths": [ + 9, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 9, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 6, + 6, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 6, + 6, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 7, + 6, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 5, + 5, + 8, + 8, + 8, + 8 + ] + }, + "gauge44": { + "actual_paid_profile": { + "1": 2433, + "2": 724, + "3": 228, + "4": 102, + "5": 20, + "8": 8 + }, + "widths": [ + 9, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 9, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 6, + 6, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 6, + 6, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 7, + 6, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 5, + 5, + 8, + 8, + 8, + 8 + ] + } +} diff --git a/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/lift.py b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/lift.py new file mode 100644 index 0000000000..717067dfce --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/coupled-carrier-cap740/vendor/lift.py @@ -0,0 +1,152 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Ten interleaved copies and a sparse, preimage-bound allocation journal.""" + +from collections import Counter, defaultdict + +COPIES = 10 +BASE_T = 74 +HELPERS = 408 +BASE_ROLES = 9 * BASE_T * HELPERS +MAX_EDITS = 2000 + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def row_at(base, index): + need(type(index) is int and 0 <= index < COPIES * BASE_ROLES, "lift row index") + copy, original = divmod(index, BASE_ROLES) + time, helper, owner, child, port, offset = base[original] + return [COPIES * time + copy, helper, owner + BASE_T * copy, child, port, offset] + + +def patch(base, journal): + need(len(base) == BASE_ROLES, "base role count") + need(journal.get("copies") == COPIES, "journal lift multiplicity") + edits = journal.get("edits") + need(type(edits) is list and 0 < len(edits) <= MAX_EDITS, "journal size") + result = {} + for entry in edits: + need(type(entry) is list and len(entry) == 3, "edit shape") + index, before, after = entry + need(type(index) is int, "journal integer index") + need(index not in result, "duplicate journal index") + need(before == row_at(base, index), "journal preimage") + need(type(after) is list and len(after) == 6, "replacement row shape") + need(all(type(x) is int for x in after), "replacement integers") + need(after[:2] == before[:2], "fixed call/helper identity") + result[index] = after + return result + + +class Rows: + """Bounded streaming literal witness, in copy-major source-row order.""" + + def __init__(self, base, edits): + need(len(base) == BASE_ROLES, "stream base count") + self.base, self.edits = base, edits + + def __len__(self): + return COPIES * BASE_ROLES + + def __iter__(self): + for index in range(len(self)): + yield self.edits[index] if index in self.edits else row_at(self.base, index) + + +def chronology(order, dispatch): + need(len(order) == len(dispatch) == 9 * BASE_T, "base chronology size") + lifted_order, lifted_dispatch = [], {} + for stage, owner in order: + for copy in range(COPIES): + call = (stage, owner + BASE_T * copy) + lifted_order.append(list(call)) + lifted_dispatch[call] = dispatch[stage, owner] + return lifted_order, lifted_dispatch + + +def destination_window(key, windows): + owner, child, port = key + need(0 <= owner < COPIES * BASE_T and 0 <= port < 112, "destination bounds") + copy, original = divmod(owner, BASE_T) + need((original, child) in windows, "destination child") + capacity, lower, upper = windows[original, child] + lower = -1 if lower == -1 else COPIES * lower + copy + return capacity, lower, COPIES * upper + copy + + +def bin_members(base, index, key, edits): + copy, owner = divmod(key[0], BASE_T) + members = {} + for original in index.get((owner, key[1], key[2]), []): + global_index = copy * BASE_ROLES + original + if global_index not in edits: + members[global_index] = row_at(base, global_index) + for global_index, row in edits.items(): + if tuple(row[2:5]) == key: + members[global_index] = row + return members + + +def check_bin(key, members, widths, windows): + capacity, lower, upper = destination_window(key, windows) + mask, pattern = 0, [] + for row in members.values(): + time, helper, _, _, _, offset = row + need(lower < time <= upper, "changed source window") + width = widths[time // COPIES][helper] + need(0 <= offset and offset + width <= capacity, "changed capacity") + bits = ((1 << width) - 1) << offset + need(mask & bits == 0, "changed bin overlap") + mask |= bits + pattern.append(width) + used = mask.bit_count() + need(mask == (1 << used) - 1, "changed compact prefix") + return capacity - used, (capacity, tuple(sorted(pattern))) + + +def affected_calls(base, edits, families): + times = {row[0] for row in edits.values()} + need(len(times) <= MAX_EDITS, "affected call count") + for time in times: + original, copy = divmod(time, COPIES) + occupied = set() + for helper in range(HELPERS): + index = copy * BASE_ROLES + original * HELPERS + helper + row = edits[index] if index in edits else row_at(base, index) + family = row[2], families[row[3]], row[4] + need(family not in occupied, "changed same-call physical family") + occupied.add(family) + return len(times) + + +def differential(base, edits, widths, windows, families): + index = defaultdict(list) + for original, row in enumerate(base): + need(row[:2] == [original // HELPERS, original % HELPERS], "base row ordering") + index[tuple(row[2:5])].append(original) + keys = {tuple(row_at(base, i)[2:5]) for i in edits} + keys.update(tuple(row[2:5]) for row in edits.values()) + need(len(keys) <= 2 * MAX_EDITS, "affected bin count") + delta, pattern_delta = Counter(), Counter() + for key in sorted(keys): + before = bin_members(base, index, key, {}) + after = bin_members(base, index, key, edits) + old_idle, old_pattern = check_bin(key, before, widths, windows) + new_idle, new_pattern = check_bin(key, after, widths, windows) + if old_idle: + delta[old_idle] -= 1 + if new_idle: + delta[new_idle] += 1 + pattern_delta[old_pattern] -= 1 + pattern_delta[new_pattern] += 1 + return { + "affected_bins": len(keys), + "affected_calls": affected_calls(base, edits, families), + "idle_delta": {rank: count for rank, count in sorted(delta.items()) if count}, + "pattern_delta": [ + [cap, list(ws), n] for (cap, ws), n in sorted(pattern_delta.items()) if n + ], + } diff --git a/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/DISPATCH.json b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/DISPATCH.json new file mode 100644 index 0000000000..9544fee4e6 --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/DISPATCH.json @@ -0,0 +1 @@ +[[0,0,"extra"],[0,37,"extra"],[0,1,"extra"],[0,38,"extra"],[0,2,"extra"],[0,39,"extra"],[0,3,"extra"],[0,40,"extra"],[0,4,"extra"],[0,41,"extra"],[1,0,"extra"],[1,37,"extra"],[0,5,"extra"],[0,42,"extra"],[1,1,"extra"],[1,38,"extra"],[0,6,"extra"],[0,43,"extra"],[1,2,"extra"],[1,39,"extra"],[0,7,"extra"],[0,44,"extra"],[1,3,"extra"],[1,40,"extra"],[0,8,"extra"],[0,45,"extra"],[1,4,"extra"],[1,41,"extra"],[0,9,"extra"],[0,46,"extra"],[2,0,"extra"],[2,37,"extra"],[1,5,"extra"],[1,42,"extra"],[0,10,"extra"],[0,47,"extra"],[2,1,"extra"],[2,38,"extra"],[1,6,"extra"],[1,43,"extra"],[0,11,"extra"],[0,48,"extra"],[2,2,"extra"],[2,39,"extra"],[1,7,"extra"],[1,44,"extra"],[0,12,"extra"],[0,49,"extra"],[2,3,"extra"],[2,40,"extra"],[1,8,"extra"],[1,45,"extra"],[0,13,"extra"],[0,50,"extra"],[2,4,"extra"],[2,41,"extra"],[1,9,"extra"],[1,46,"extra"],[3,0,"extra"],[3,37,"extra"],[0,14,"extra"],[0,51,"extra"],[2,5,"extra"],[2,42,"extra"],[1,10,"extra"],[1,47,"extra"],[3,1,"extra"],[3,38,"extra"],[0,15,"extra"],[0,52,"extra"],[2,6,"extra"],[2,43,"extra"],[1,11,"extra"],[1,48,"extra"],[3,2,"extra"],[3,39,"extra"],[0,16,"extra"],[0,53,"extra"],[2,7,"extra"],[2,44,"extra"],[1,12,"extra"],[1,49,"extra"],[3,3,"extra"],[3,40,"extra"],[0,17,"extra"],[0,54,"extra"],[2,8,"extra"],[2,45,"extra"],[1,13,"extra"],[1,50,"extra"],[3,4,"extra"],[3,41,"extra"],[0,18,"extra"],[0,55,"extra"],[2,9,"extra"],[2,46,"extra"],[4,0,"extra"],[4,37,"extra"],[1,14,"extra"],[1,51,"extra"],[3,5,"extra"],[3,42,"extra"],[0,19,"extra"],[0,56,"extra"],[2,10,"extra"],[2,47,"extra"],[4,1,"extra"],[4,38,"extra"],[1,15,"extra"],[1,52,"extra"],[3,6,"extra"],[3,43,"extra"],[0,20,"extra"],[0,57,"extra"],[2,11,"extra"],[2,48,"extra"],[4,2,"extra"],[4,39,"extra"],[1,16,"extra"],[1,53,"extra"],[3,7,"extra"],[3,44,"extra"],[0,21,"extra"],[0,58,"extra"],[2,12,"extra"],[2,49,"extra"],[4,3,"extra"],[4,40,"extra"],[1,17,"extra"],[1,54,"extra"],[3,8,"extra"],[3,45,"extra"],[0,22,"extra"],[0,59,"extra"],[2,13,"extra"],[2,50,"extra"],[4,4,"extra"],[4,41,"extra"],[1,18,"extra"],[1,55,"extra"],[3,9,"extra"],[3,46,"extra"],[0,23,"extra"],[0,60,"extra"],[5,0,"extra"],[5,37,"extra"],[2,14,"extra"],[2,51,"extra"],[4,5,"extra"],[4,42,"extra"],[1,19,"extra"],[1,56,"extra"],[3,10,"extra"],[3,47,"extra"],[0,24,"extra"],[0,61,"extra"],[5,1,"extra"],[5,38,"extra"],[2,15,"extra"],[2,52,"extra"],[4,6,"extra"],[4,43,"extra"],[1,20,"extra"],[1,57,"extra"],[3,11,"extra"],[3,48,"extra"],[0,25,"extra"],[0,62,"extra"],[5,2,"extra"],[5,39,"extra"],[2,16,"extra"],[2,53,"extra"],[4,7,"extra"],[4,44,"extra"],[1,21,"extra"],[1,58,"extra"],[3,12,"extra"],[3,49,"extra"],[0,26,"extra"],[0,63,"extra"],[5,3,"extra"],[5,40,"extra"],[2,17,"extra"],[2,54,"extra"],[4,8,"extra"],[4,45,"extra"],[1,22,"extra"],[1,59,"extra"],[3,13,"extra"],[3,50,"extra"],[0,27,"extra"],[0,64,"extra"],[5,4,"extra"],[5,41,"extra"],[2,18,"extra"],[2,55,"extra"],[4,9,"extra"],[4,46,"extra"],[1,23,"extra"],[1,60,"extra"],[6,0,"extra"],[6,37,"extra"],[3,14,"extra"],[3,51,"extra"],[0,28,"extra"],[0,65,"extra"],[5,5,"extra"],[5,42,"extra"],[2,19,"extra"],[2,56,"extra"],[4,10,"extra"],[4,47,"extra"],[1,24,"extra"],[1,61,"extra"],[6,1,"extra"],[6,38,"extra"],[3,15,"extra"],[3,52,"extra"],[0,29,"extra"],[0,66,"extra"],[5,6,"extra"],[5,43,"extra"],[2,20,"extra"],[2,57,"extra"],[4,11,"extra"],[4,48,"extra"],[1,25,"extra"],[1,62,"extra"],[6,2,"extra"],[6,39,"extra"],[3,16,"extra"],[3,53,"extra"],[0,30,"extra"],[0,67,"extra"],[5,7,"extra"],[5,44,"extra"],[2,21,"extra"],[2,58,"extra"],[4,12,"extra"],[4,49,"extra"],[1,26,"extra"],[1,63,"extra"],[6,3,"extra"],[6,40,"extra"],[3,17,"extra"],[3,54,"extra"],[0,31,"extra"],[0,68,"extra"],[5,8,"extra"],[5,45,"extra"],[2,22,"extra"],[2,59,"extra"],[4,13,"extra"],[4,50,"extra"],[1,27,"extra"],[1,64,"extra"],[6,4,"extra"],[6,41,"extra"],[3,18,"extra"],[3,55,"extra"],[0,32,"extra"],[0,69,"extra"],[5,9,"extra"],[5,46,"extra"],[2,23,"extra"],[2,60,"extra"],[7,0,"extra"],[7,37,"extra"],[4,14,"extra"],[4,51,"extra"],[1,28,"extra"],[1,65,"extra"],[6,5,"extra"],[6,42,"extra"],[3,19,"extra"],[3,56,"extra"],[0,33,"extra"],[0,70,"extra"],[5,10,"extra"],[5,47,"extra"],[2,24,"extra"],[2,61,"extra"],[7,1,"extra"],[7,38,"extra"],[4,15,"extra"],[4,52,"extra"],[1,29,"extra"],[1,66,"extra"],[6,6,"extra"],[6,43,"extra"],[3,20,"extra"],[3,57,"extra"],[0,34,"extra"],[0,71,"extra"],[5,11,"extra"],[5,48,"extra"],[2,25,"extra"],[2,62,"extra"],[7,2,"extra"],[7,39,"extra"],[4,16,"extra"],[4,53,"extra"],[1,30,"extra"],[1,67,"extra"],[6,7,"extra"],[6,44,"extra"],[3,21,"extra"],[3,58,"extra"],[0,35,"extra"],[0,72,"extra"],[5,12,"extra"],[5,49,"extra"],[2,26,"extra"],[2,63,"extra"],[7,3,"extra"],[7,40,"extra"],[4,17,"extra"],[4,54,"extra"],[1,31,"extra"],[1,68,"extra"],[6,8,"extra"],[6,45,"extra"],[3,22,"extra"],[3,59,"extra"],[0,36,"extra"],[0,73,"extra"],[5,13,"extra"],[5,50,"extra"],[2,27,"extra"],[2,64,"extra"],[7,4,"extra"],[7,41,"extra"],[4,18,"extra"],[4,55,"extra"],[1,32,"extra"],[1,69,"extra"],[6,9,"extra"],[6,46,"extra"],[3,23,"extra"],[3,60,"extra"],[8,0,"extra"],[8,37,"extra"],[5,14,"extra"],[5,51,"extra"],[2,28,"extra"],[2,65,"extra"],[7,5,"extra"],[7,42,"extra"],[4,19,"extra"],[4,56,"extra"],[1,33,"extra"],[1,70,"extra"],[6,10,"extra"],[6,47,"extra"],[3,24,"extra"],[3,61,"extra"],[8,1,"extra"],[8,38,"extra"],[5,15,"extra"],[5,52,"extra"],[2,29,"extra"],[2,66,"extra"],[7,6,"extra"],[7,43,"extra"],[4,20,"extra"],[4,57,"extra"],[1,34,"extra"],[1,71,"extra"],[6,11,"extra"],[6,48,"extra"],[3,25,"extra"],[3,62,"extra"],[8,2,"extra"],[8,39,"extra"],[5,16,"extra"],[5,53,"extra"],[2,30,"extra"],[2,67,"extra"],[7,7,"extra"],[7,44,"extra"],[4,21,"extra"],[4,58,"extra"],[1,35,"extra"],[1,72,"extra"],[6,12,"extra"],[6,49,"extra"],[3,26,"extra"],[3,63,"extra"],[8,3,"extra"],[8,40,"extra"],[5,17,"extra"],[5,54,"extra"],[2,31,"extra"],[2,68,"extra"],[7,8,"extra"],[7,45,"extra"],[4,22,"extra"],[4,59,"extra"],[1,36,"extra"],[1,73,"extra"],[6,13,"extra"],[6,50,"extra"],[3,27,"extra"],[3,64,"extra"],[8,4,"extra"],[8,41,"extra"],[5,18,"extra"],[5,55,"extra"],[2,32,"extra"],[2,69,"extra"],[7,9,"extra"],[7,46,"extra"],[4,23,"extra"],[4,60,"extra"],[6,14,"extra"],[6,51,"extra"],[3,28,"gauge44"],[3,65,"gauge44"],[8,5,"gauge44"],[8,42,"gauge44"],[5,19,"gauge44"],[5,56,"gauge44"],[2,33,"gauge44"],[2,70,"gauge44"],[7,10,"gauge44"],[7,47,"gauge44"],[4,24,"gauge44"],[4,61,"gauge44"],[6,15,"gauge44"],[6,52,"gauge44"],[3,29,"gauge44"],[3,66,"gauge44"],[8,6,"gauge44"],[8,43,"gauge44"],[5,20,"gauge44"],[5,57,"gauge44"],[2,34,"gauge44"],[2,71,"gauge44"],[7,11,"gauge44"],[7,48,"gauge44"],[4,25,"gauge44"],[4,62,"gauge44"],[6,16,"gauge44"],[6,53,"gauge44"],[3,30,"gauge44"],[3,67,"gauge44"],[8,7,"gauge44"],[8,44,"gauge44"],[5,21,"gauge44"],[5,58,"gauge44"],[2,35,"gauge44"],[2,72,"gauge44"],[7,12,"gauge44"],[7,49,"gauge44"],[4,26,"gauge44"],[4,63,"gauge44"],[6,17,"gauge44"],[6,54,"gauge44"],[3,31,"gauge44"],[3,68,"gauge44"],[8,8,"gauge44"],[8,45,"gauge44"],[5,22,"gauge44"],[5,59,"gauge44"],[2,36,"gauge44"],[2,73,"gauge44"],[7,13,"gauge44"],[7,50,"gauge44"],[4,27,"gauge44"],[4,64,"gauge44"],[6,18,"gauge44"],[6,55,"gauge44"],[3,32,"gauge44"],[3,69,"gauge44"],[8,9,"gauge44"],[8,46,"gauge44"],[5,23,"gauge44"],[5,60,"gauge44"],[7,14,"gauge44"],[7,51,"gauge44"],[4,28,"gauge44"],[4,65,"gauge44"],[6,19,"gauge44"],[6,56,"gauge44"],[3,33,"gauge44"],[3,70,"gauge44"],[8,10,"gauge44"],[8,47,"gauge44"],[5,24,"gauge44"],[5,61,"gauge44"],[7,15,"gauge44"],[7,52,"gauge44"],[4,29,"gauge44"],[4,66,"gauge44"],[6,20,"gauge44"],[6,57,"gauge44"],[3,34,"gauge44"],[3,71,"gauge44"],[8,11,"gauge44"],[8,48,"gauge44"],[5,25,"gauge44"],[5,62,"gauge44"],[7,16,"gauge44"],[7,53,"gauge44"],[4,30,"gauge44"],[4,67,"gauge44"],[6,21,"gauge44"],[6,58,"gauge44"],[3,35,"gauge44"],[3,72,"gauge44"],[8,12,"gauge44"],[8,49,"gauge44"],[5,26,"gauge44"],[5,63,"gauge44"],[7,17,"gauge44"],[7,54,"gauge44"],[4,31,"gauge44"],[4,68,"gauge44"],[6,22,"gauge44"],[6,59,"gauge44"],[3,36,"gauge44"],[3,73,"gauge44"],[8,13,"gauge44"],[8,50,"gauge44"],[5,27,"gauge44"],[5,64,"gauge44"],[7,18,"gauge44"],[7,55,"gauge44"],[4,32,"gauge44"],[4,69,"gauge44"],[6,23,"gauge44"],[6,60,"gauge44"],[8,14,"gauge44"],[8,51,"gauge44"],[5,28,"gauge44"],[5,65,"gauge44"],[7,19,"gauge44"],[7,56,"gauge44"],[4,33,"gauge44"],[4,70,"gauge44"],[6,24,"gauge44"],[6,61,"gauge44"],[8,15,"gauge44"],[8,52,"gauge44"],[5,29,"gauge44"],[5,66,"gauge44"],[7,20,"gauge44"],[7,57,"gauge44"],[4,34,"gauge44"],[4,71,"gauge44"],[6,25,"gauge44"],[6,62,"gauge44"],[8,16,"gauge44"],[8,53,"gauge44"],[5,30,"gauge44"],[5,67,"gauge44"],[7,21,"gauge44"],[7,58,"gauge44"],[4,35,"gauge44"],[4,72,"gauge44"],[6,26,"gauge44"],[6,63,"gauge44"],[8,17,"gauge44"],[8,54,"gauge44"],[5,31,"gauge44"],[5,68,"gauge44"],[7,22,"gauge44"],[7,59,"gauge44"],[4,36,"gauge44"],[4,73,"gauge44"],[6,27,"gauge44"],[6,64,"gauge44"],[8,18,"gauge44"],[8,55,"gauge44"],[5,32,"gauge44"],[5,69,"gauge44"],[7,23,"gauge44"],[7,60,"gauge44"],[6,28,"gauge44"],[6,65,"gauge44"],[8,19,"gauge44"],[8,56,"gauge44"],[5,33,"gauge44"],[5,70,"gauge44"],[7,24,"gauge44"],[7,61,"gauge44"],[6,29,"gauge44"],[6,66,"gauge44"],[8,20,"gauge44"],[8,57,"gauge44"],[5,34,"gauge44"],[5,71,"gauge44"],[7,25,"gauge44"],[7,62,"gauge44"],[6,30,"gauge44"],[6,67,"gauge44"],[8,21,"gauge44"],[8,58,"gauge44"],[5,35,"gauge44"],[5,72,"gauge44"],[7,26,"gauge44"],[7,63,"gauge44"],[6,31,"gauge44"],[6,68,"gauge44"],[8,22,"gauge44"],[8,59,"gauge44"],[5,36,"gauge44"],[5,73,"gauge44"],[7,27,"gauge44"],[7,64,"gauge44"],[6,32,"gauge44"],[6,69,"gauge44"],[8,23,"gauge44"],[8,60,"gauge44"],[7,28,"gauge44"],[7,65,"gauge44"],[6,33,"gauge44"],[6,70,"gauge44"],[8,24,"gauge44"],[8,61,"gauge44"],[7,29,"gauge44"],[7,66,"gauge44"],[6,34,"gauge44"],[6,71,"gauge44"],[8,25,"gauge44"],[8,62,"gauge44"],[7,30,"gauge44"],[7,67,"gauge44"],[6,35,"gauge44"],[6,72,"gauge44"],[8,26,"gauge44"],[8,63,"gauge44"],[7,31,"gauge44"],[7,68,"gauge44"],[6,36,"gauge44"],[6,73,"gauge44"],[8,27,"gauge44"],[8,64,"gauge44"],[7,32,"gauge44"],[7,69,"gauge44"],[8,28,"gauge44"],[8,65,"gauge44"],[7,33,"gauge44"],[7,70,"gauge44"],[8,29,"gauge44"],[8,66,"gauge44"],[7,34,"gauge44"],[7,71,"gauge44"],[8,30,"gauge44"],[8,67,"gauge44"],[7,35,"gauge44"],[7,72,"gauge44"],[8,31,"gauge44"],[8,68,"gauge44"],[7,36,"gauge44"],[7,73,"gauge44"],[8,32,"gauge44"],[8,69,"gauge44"],[8,33,"gauge44"],[8,70,"gauge44"],[8,34,"gauge44"],[8,71,"gauge44"],[8,35,"gauge44"],[8,72,"gauge44"],[8,36,"gauge44"],[8,73,"gauge44"]] \ No newline at end of file diff --git a/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/ORDER.json b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/ORDER.json new file mode 100644 index 0000000000..7409c4df10 --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/ORDER.json @@ -0,0 +1 @@ +[[0,0],[0,37],[0,1],[0,38],[0,2],[0,39],[0,3],[0,40],[0,4],[0,41],[1,0],[1,37],[0,5],[0,42],[1,1],[1,38],[0,6],[0,43],[1,2],[1,39],[0,7],[0,44],[1,3],[1,40],[0,8],[0,45],[1,4],[1,41],[0,9],[0,46],[2,0],[2,37],[1,5],[1,42],[0,10],[0,47],[2,1],[2,38],[1,6],[1,43],[0,11],[0,48],[2,2],[2,39],[1,7],[1,44],[0,12],[0,49],[2,3],[2,40],[1,8],[1,45],[0,13],[0,50],[2,4],[2,41],[1,9],[1,46],[3,0],[3,37],[0,14],[0,51],[2,5],[2,42],[1,10],[1,47],[3,1],[3,38],[0,15],[0,52],[2,6],[2,43],[1,11],[1,48],[3,2],[3,39],[0,16],[0,53],[2,7],[2,44],[1,12],[1,49],[3,3],[3,40],[0,17],[0,54],[2,8],[2,45],[1,13],[1,50],[3,4],[3,41],[0,18],[0,55],[2,9],[2,46],[4,0],[4,37],[1,14],[1,51],[3,5],[3,42],[0,19],[0,56],[2,10],[2,47],[4,1],[4,38],[1,15],[1,52],[3,6],[3,43],[0,20],[0,57],[2,11],[2,48],[4,2],[4,39],[1,16],[1,53],[3,7],[3,44],[0,21],[0,58],[2,12],[2,49],[4,3],[4,40],[1,17],[1,54],[3,8],[3,45],[0,22],[0,59],[2,13],[2,50],[4,4],[4,41],[1,18],[1,55],[3,9],[3,46],[0,23],[0,60],[5,0],[5,37],[2,14],[2,51],[4,5],[4,42],[1,19],[1,56],[3,10],[3,47],[0,24],[0,61],[5,1],[5,38],[2,15],[2,52],[4,6],[4,43],[1,20],[1,57],[3,11],[3,48],[0,25],[0,62],[5,2],[5,39],[2,16],[2,53],[4,7],[4,44],[1,21],[1,58],[3,12],[3,49],[0,26],[0,63],[5,3],[5,40],[2,17],[2,54],[4,8],[4,45],[1,22],[1,59],[3,13],[3,50],[0,27],[0,64],[5,4],[5,41],[2,18],[2,55],[4,9],[4,46],[1,23],[1,60],[6,0],[6,37],[3,14],[3,51],[0,28],[0,65],[5,5],[5,42],[2,19],[2,56],[4,10],[4,47],[1,24],[1,61],[6,1],[6,38],[3,15],[3,52],[0,29],[0,66],[5,6],[5,43],[2,20],[2,57],[4,11],[4,48],[1,25],[1,62],[6,2],[6,39],[3,16],[3,53],[0,30],[0,67],[5,7],[5,44],[2,21],[2,58],[4,12],[4,49],[1,26],[1,63],[6,3],[6,40],[3,17],[3,54],[0,31],[0,68],[5,8],[5,45],[2,22],[2,59],[4,13],[4,50],[1,27],[1,64],[6,4],[6,41],[3,18],[3,55],[0,32],[0,69],[5,9],[5,46],[2,23],[2,60],[7,0],[7,37],[4,14],[4,51],[1,28],[1,65],[6,5],[6,42],[3,19],[3,56],[0,33],[0,70],[5,10],[5,47],[2,24],[2,61],[7,1],[7,38],[4,15],[4,52],[1,29],[1,66],[6,6],[6,43],[3,20],[3,57],[0,34],[0,71],[5,11],[5,48],[2,25],[2,62],[7,2],[7,39],[4,16],[4,53],[1,30],[1,67],[6,7],[6,44],[3,21],[3,58],[0,35],[0,72],[5,12],[5,49],[2,26],[2,63],[7,3],[7,40],[4,17],[4,54],[1,31],[1,68],[6,8],[6,45],[3,22],[3,59],[0,36],[0,73],[5,13],[5,50],[2,27],[2,64],[7,4],[7,41],[4,18],[4,55],[1,32],[1,69],[6,9],[6,46],[3,23],[3,60],[8,0],[8,37],[5,14],[5,51],[2,28],[2,65],[7,5],[7,42],[4,19],[4,56],[1,33],[1,70],[6,10],[6,47],[3,24],[3,61],[8,1],[8,38],[5,15],[5,52],[2,29],[2,66],[7,6],[7,43],[4,20],[4,57],[1,34],[1,71],[6,11],[6,48],[3,25],[3,62],[8,2],[8,39],[5,16],[5,53],[2,30],[2,67],[7,7],[7,44],[4,21],[4,58],[1,35],[1,72],[6,12],[6,49],[3,26],[3,63],[8,3],[8,40],[5,17],[5,54],[2,31],[2,68],[7,8],[7,45],[4,22],[4,59],[1,36],[1,73],[6,13],[6,50],[3,27],[3,64],[8,4],[8,41],[5,18],[5,55],[2,32],[2,69],[7,9],[7,46],[4,23],[4,60],[6,14],[6,51],[3,28],[3,65],[8,5],[8,42],[5,19],[5,56],[2,33],[2,70],[7,10],[7,47],[4,24],[4,61],[6,15],[6,52],[3,29],[3,66],[8,6],[8,43],[5,20],[5,57],[2,34],[2,71],[7,11],[7,48],[4,25],[4,62],[6,16],[6,53],[3,30],[3,67],[8,7],[8,44],[5,21],[5,58],[2,35],[2,72],[7,12],[7,49],[4,26],[4,63],[6,17],[6,54],[3,31],[3,68],[8,8],[8,45],[5,22],[5,59],[2,36],[2,73],[7,13],[7,50],[4,27],[4,64],[6,18],[6,55],[3,32],[3,69],[8,9],[8,46],[5,23],[5,60],[7,14],[7,51],[4,28],[4,65],[6,19],[6,56],[3,33],[3,70],[8,10],[8,47],[5,24],[5,61],[7,15],[7,52],[4,29],[4,66],[6,20],[6,57],[3,34],[3,71],[8,11],[8,48],[5,25],[5,62],[7,16],[7,53],[4,30],[4,67],[6,21],[6,58],[3,35],[3,72],[8,12],[8,49],[5,26],[5,63],[7,17],[7,54],[4,31],[4,68],[6,22],[6,59],[3,36],[3,73],[8,13],[8,50],[5,27],[5,64],[7,18],[7,55],[4,32],[4,69],[6,23],[6,60],[8,14],[8,51],[5,28],[5,65],[7,19],[7,56],[4,33],[4,70],[6,24],[6,61],[8,15],[8,52],[5,29],[5,66],[7,20],[7,57],[4,34],[4,71],[6,25],[6,62],[8,16],[8,53],[5,30],[5,67],[7,21],[7,58],[4,35],[4,72],[6,26],[6,63],[8,17],[8,54],[5,31],[5,68],[7,22],[7,59],[4,36],[4,73],[6,27],[6,64],[8,18],[8,55],[5,32],[5,69],[7,23],[7,60],[6,28],[6,65],[8,19],[8,56],[5,33],[5,70],[7,24],[7,61],[6,29],[6,66],[8,20],[8,57],[5,34],[5,71],[7,25],[7,62],[6,30],[6,67],[8,21],[8,58],[5,35],[5,72],[7,26],[7,63],[6,31],[6,68],[8,22],[8,59],[5,36],[5,73],[7,27],[7,64],[6,32],[6,69],[8,23],[8,60],[7,28],[7,65],[6,33],[6,70],[8,24],[8,61],[7,29],[7,66],[6,34],[6,71],[8,25],[8,62],[7,30],[7,67],[6,35],[6,72],[8,26],[8,63],[7,31],[7,68],[6,36],[6,73],[8,27],[8,64],[7,32],[7,69],[8,28],[8,65],[7,33],[7,70],[8,29],[8,66],[7,34],[7,71],[8,30],[8,67],[7,35],[7,72],[8,31],[8,68],[7,36],[7,73],[8,32],[8,69],[8,33],[8,70],[8,34],[8,71],[8,35],[8,72],[8,36],[8,73]] \ No newline at end of file diff --git a/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz new file mode 100644 index 0000000000..7a1db55a4d Binary files /dev/null and b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz differ diff --git a/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz new file mode 100644 index 0000000000..114808c32b Binary files /dev/null and b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz differ diff --git a/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/independent_owners.py b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/independent_owners.py new file mode 100644 index 0000000000..16013201b1 --- /dev/null +++ b/research/retimed-t488-composition/owners/source/research/rank7-joint-endframes/allocation/vendor/independent_owners.py @@ -0,0 +1,111 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Independent integer-time and mask check of the actual parameterized-replica owner allocation with PR2802 retired7 providers. + +Chronology/mask method derives from Tekalign's PR2751 independent_owners.py; +Marius-Paul Dumitrean's PR2802 retired7 native construction and the retained +provider frame checker keep their +upstream attribution. No solver, producer, emitter or floating arithmetic is +imported. This checks finite geometry, not global native/outer admission. +""" +from pathlib import Path +from collections import Counter,defaultdict +import argparse,hashlib,gzip,json,sys,types +sys.dont_write_bytecode=True +def need(v,msg): + if not v:raise ValueError(msg) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=Path(p).read_bytes();return json.loads(gzip.decompress(b)if str(p).endswith('.gz')else b) +def inputs(PROVIDER): + provider_pins={'inputs/PLAN.json.gz':'afb3c5c8134fc2cfce0b50a21758490c225574994b2c3c5161e53e2355acc6fa','inputs/GLOBAL-TEMPLATE.json.gz':'21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e','independent_local.py':'ee1faab70095fa312fc61d375ddf015b76104cb1a542ae7876a149e7999faa20','inputs/PROVIDERS.json':'391075b1411a3976850c633f92f58c35ed3f046f09d55bd435d7545124543fd4','inputs/WORD-base.json.gz':'dca8becca633ffc5e998985631bcbcab1123b27ca7f10ac6a96b1ec21ce69a66','inputs/WORD-extra.json.gz':'6bcb3c2c73eaf7558ddc6ef6b484334f8d96b9d2b227e265483b657de00f4bb7'} + hashes={} + for n,pin in provider_pins.items(): + p=PROVIDER/n;need(sha(p)==pin,'pinned PR2802 provider source '+n);hashes[str(p)]=pin + L=types.ModuleType('retained_independent_frames');exec(compile((PROVIDER/'independent_local.py').read_bytes(),'pinned_PR2802_independent_local.py','exec'),L.__dict__);providers=read(PROVIDER/'inputs/PROVIDERS.json') + for tag,pid in [('base','gauge44'),('extra','extra')]: + word=read(PROVIDER/f'inputs/WORD-{tag}.json.gz');report,start,ends=L.check_frames(word);L.check_cleanup(word);L.algebra(word) + widths=[L.dm(ends[k])-L.dm(start[k])for k in sorted(start)if k>=224] + need(widths==providers[pid]['widths']and len(widths)==408,'actual ordered provider frame widths');need(len(word['centers'])==8,'eight centres');providers[pid]['actual_paid_profile']={int(k):v for k,v in report['profile'].items()} + return read(PROVIDER/'inputs/PLAN.json.gz'),read(PROVIDER/'inputs/GLOBAL-TEMPLATE.json.gz'),providers,hashes + +def windows(template,order,T): + ranks={c['child']:c['rank']for c in template['idle_children']};pairs={e['stage']:e['pair']for e in template['recipe']if e['kind']=='local'} + blocks={};stage=None + for event in template['execution_schedule']: + if event['kind']in('bank_padding_cover_sweep','translate_every_live_family'):continue + if event['kind']=='local_cover_sweep':stage=event['stage'];blocks[stage]=[] + need(stage is not None,'source event before local call');blocks[stage].append(event) + need(set(blocks)==set(range(9)),'nine source stages') + progress=[0]*T;last={};result={} + for t,(stage,replica)in enumerate(order): + need(0<=replica0,'idle source position');start=last.get((replica,event['pair']),-1) + for child in event['child_indices']: + if child in ranks:result[replica,child]=(ranks[child],start,t) + elif kind in ('terminal_Y_translations','terminal'):pass # inherited terminal phase; no pending-window endpoints + else:raise ValueError('unknown source event kind') + need(progress==[9]*T,'complete replica source progression');return result + +def check(T,order,fill,dispatch,claimed,plan,template,providers): + need(type(T)is int and T>0,'positive T');N=9*T + need(len(order)==N and set(map(tuple,order))=={(s,r)for s in range(9)for r in range(T)},'complete T call coverage') + win=windows(template,order,T) + need(set(dispatch)==set(map(tuple,order))and all(p in providers for p in dispatch.values()),'provider dispatch coverage') + for s,r,pid in fill.get('dispatch_overrides',[]):need(dispatch.get((s,r))==pid,'final dispatch override binding') + need(fill['columns']==['time','helper','owner_replica','child','port','offset'],'literal role columns') + need(len(fill['rows'])==N*408,'complete role count');helpers=[0]*N;families=[0]*N;occupied={};lastrow={} + for idx,row in enumerate(fill['rows']): + need(len(row)==6 and all(type(x)is int for x in row),'integer role shape');t,h,o,c,p,z=row + need(0<=tlastrow[key][0]:lastrow[key]=(z,idx,w) + need(helpers==[(1<<408)-1]*N,'all helper identities');idle=Counter() + for(o,c),(cap,_,_)in win.items(): + for p in range(112): + key=(o,c,p);mask=occupied.get(key,0);used=mask.bit_count();need(mask==(1<= D_g-(R-1)n_g` follows from the same inequality. A bin of degree R +delivers one unit, all other bins deliver at most one, and each width delivers +exactly I_w. Integral capacities and lower bounds give an integral feasible +flow after the standard circulation reduction. The implemented augmenting-path +algorithm produces this integral flow directly. Removing its selected roles +preserves all three invariants with R replaced by R-1. Repeating constructs S +actual calls, each with every required width count, at most one role from a bin, +and at most n_g roles from each group. + +This argument is an all-parameter written realization lemma under its stated +integer-flow and pattern-size hypotheses. Feasibility of this particular +aggregate witness is finite computation, not an all-parameter packing theorem. + +## Physical owners and endpoint availability + +For a group, the physical stock is exactly S copies of its n_g source bins. +A bin containing any role at macro-time hi requires an owner-copy index at +least the largest call-copy index among those endpoint roles. Other bins have +no lower requirement on their owner-copy index. + +For each j, the number of bins requiring owner index greater than j is at most +the number of endpoint roles assigned to actual call-copy indices greater than +j. The preceding decomposition bounds that number by `(S-1-j)n_g`, exactly the +number of physical bins in those owner copies. These nested Hall inequalities +justify sorting bins by decreasing requirement and assigning the physical +owner copies in decreasing order, with n_g bins per owner copy. The construction +checks every resulting requirement separately. Original owner, child and port +labels are retained when allocating each copy's n_g bins. + +The literal chronology is +`(stage,r) at macro-time t -> (stage,r+37*j) at time S*t+j`. +Provider dispatch is copied along that embedding. If a source window has +noninitial lower endpoint lo, every admitted macro-time satisfies t>=lo+1; +therefore `S*t+j > S*lo+k` for every owner-copy k. For an upper endpoint, +t 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. + +T488 additionally uses the exact retained T8 chronology and dispatch documented in T8-PROVENANCE.json, alongside T16-PROVENANCE.json. The three-stream witness changes allocation and chronology, not the staged local operator. diff --git a/research/retimed-t488-composition/owners/upstream/UPSTREAM-SOURCE-NOTICE b/research/retimed-t488-composition/owners/upstream/UPSTREAM-SOURCE-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/retimed-t488-composition/owners/upstream/UPSTREAM-SOURCE-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/retimed-t488-composition/owners/upstream/independent_literal.py b/research/retimed-t488-composition/owners/upstream/independent_literal.py new file mode 100644 index 0000000000..e2a226950e --- /dev/null +++ b/research/retimed-t488-composition/owners/upstream/independent_literal.py @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Path-adapted copy of the parent independent owner audit. +Original SHA256 1001cb1c8b4ee1f93c23b58b094565ec1b3931eee0ea091a23504696e380be9e. +Filesystem/source authentication and output paths adapted; mathematical predicates retained. +""" +"""Independent vectorized audit of the literal staged-pair owner journal. + +No optimizer, producer, inherited owner checker or reconstructor is imported. +Uses the source execution template and the actual checked native frame tables. +""" +from pathlib import Path +from collections import Counter +import gzip,hashlib,json,os,sys +import numpy as np +R=Path(__file__).resolve().parent +if not __debug__:raise SystemExit('unoptimized Python required') +for _key in ('OWNER_SOURCE_REPO','OWNER_LITERAL_DIR','OWNER_NATIVE_DIR','OWNER_AUDIT_OUTPUT'): + if not os.environ.get(_key):raise SystemExit('missing '+_key) +A=Path(os.environ['OWNER_LITERAL_DIR']).resolve() +NATIVE=Path(os.environ['OWNER_NATIVE_DIR']).resolve() +S=Path(os.environ['OWNER_SOURCE_REPO']).resolve()/'research/rank7-joint-endframes/allocation/vendor' +def need(v,m): + if not v:raise ValueError(m) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def rank(v): + piv={} + for q in v: + while q: + h=q.bit_length() + if h in piv:q^=piv[h] + else:piv[h]=q;break + return len(piv) +for rel,digest in read(R/'ARTIFACTS.json').items(): + f=R/rel;need(f.is_file() and not f.is_symlink() and sha(f)==digest,'frozen audit artifact '+rel) +paths=[A/n for n in ('FILL.json.gz','ORDER.json','DISPATCH.json','PROFILE.json')]+[S/'PLAN.json.gz',S/'TEMPLATE.json.gz'] +paths += [NATIVE/f'checked-{p}/CANONICAL-WORD.json.gz' for p in ('base','extra')] +source_pins=read(R/'SOURCE-PINS.json') +repo=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +for rel,digest in source_pins['repo_files'].items():need(sha(repo/rel)==digest,'retained source pin '+rel) +for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==source_pins['native_canonical'][tag]['canonical_sha256'],'actual native canonical pin') +pins={str(p):sha(p) for p in paths} +expected=read(R/'EXPECTED.json');need(hashlib.sha256(gzip.decompress(paths[0].read_bytes())).hexdigest()==expected['payload_sha256'],'freshT488payload') +baseorder=read(R/'ORDER37.json')+[[s,r+37]for s,r in read(R/'T8-ORDER.json')]+[[s,r+45]for s,r in read(R/'T16-ORDER.json')] +need(read(paths[1])==[[s,r+61*cp]for s,r in baseorder for cp in range(8)],'exactmixedsourceclock') +basedispatch={(s,r):p for s,r,p in read(R/'DISPATCH37.json')};basedispatch.update({(s,r+37):p for s,r,p in read(R/'T8-DISPATCH.json')});basedispatch.update({(s,r+45):p for s,r,p in read(R/'T16-DISPATCH.json')}) +need(read(paths[2])==[[s,r+61*cp,basedispatch[s,r]]for s,r in baseorder for cp in range(8)],'exactsourceproviderdispatch') +order=read(paths[1]);dispatch=read(paths[2]);profile={int(k):v for k,v in read(paths[3]).items()};plan=read(paths[4]);template=read(paths[5]) +T=488;N=9*T +need(len(order)==N and len(set(map(tuple,order)))==N,'call coverage') +clock={tuple(call):t for t,call in enumerate(order)} +need(set(clock)=={(s,r) for s in range(9) for r in range(T)},'exact source calls') +need(all([clock[s,r] for s in range(9)]==sorted(clock[s,r] for s in range(9)) for r in range(T)),'per-replica order') +D={(s,r):p for s,r,p in dispatch};need(len(dispatch)==N and set(D)==set(clock),'dispatch coverage') +need(Counter(D.values())=={'extra': 1680, 'gauge44': 2712},'provider count') +# Reconstruct source windows per replica from the actual source event sequence. +children={x['child']:x['rank'] for x in template['idle_children']};K=max(children)+1 +cap=np.zeros((T,K),dtype=np.int64);lo=np.full((T,K),N,dtype=np.int64);hi=np.full((T,K),-2,dtype=np.int64) +local_pair={x['stage']:x['pair'] for x in template['recipe'] if x['kind']=='local'} +for r in range(T): + touched={};t=None + for ev in template['execution_schedule']: + kind=ev['kind'] + if kind in ('bank_padding_cover_sweep','translate_every_live_family'):continue + if kind=='local_cover_sweep': + t=clock[ev['stage'],r];touched[local_pair[ev['stage']]]=t + elif kind=='bridge': + need(t is not None,'bridge source');touched[ev['src']]=t;touched[ev['dst']]=t + elif kind=='idle_cover_sweep': + need(t is not None,'idle source') + for c in ev['child_indices']: + if c in children: + need(cap[r,c]==0,'unique source child');cap[r,c]=children[c];lo[r,c]=touched.get(ev['pair'],-1);hi[r,c]=t + else:need(kind in ('terminal_Y_translations','terminal'),'known source event') +need(np.all(cap[:,list(children)]>0),'all source windows') +fam=np.full(K,-1,np.int64) +for c in children:fam[c]=2*plan['pairs'][str(c)]+plan['sides'][str(c)] +widths={};L=None +for tag,pid in [('base','gauge44'),('extra','extra')]: + w=read(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz') + need(w['R']==408 and len(w['zero_buffers'])==91,'native helper stock') + widths[pid]=np.array([rank(w['frames'][w['final'][224+h]])-rank(w['frames'][w['start'][224+h]]) for h in range(408)],dtype=np.int64) + need(Counter(widths[pid])=={4:26,5:2,6:18,7:52,8:97,9:213},'actual native widths') + loc={int(k):v for k,v in w['local_profile'].items()} + need(L is None or L==loc,'common actual native bill');L=loc +need(L=={1:2439,2:726,3:224,4:102,5:20,8:8},'new local bill') +bycall=np.stack([widths[D[tuple(call)]] for call in order]) +j=read(A/'FILL.json.gz');need(j['columns']==['time','helper','owner_replica','child','port','offset'] and j['dispatch_overrides']==[],'journal schema') +need(all(len(row)==6 and all(type(v) is int for v in row) for row in j['rows']),'literal integer roles') +rows=np.array(j['rows'],dtype=np.int64);del j +need(rows.shape==(N*408,6),'literal role shape') +need(np.array_equal(rows[:,0],np.repeat(np.arange(N),408)) and np.array_equal(rows[:,1],np.tile(np.arange(408),N)),'complete literal ordered helper identities') +t,h,o,c,p,z=rows.T +need(np.all((o>=0)&(o=0)&(c=0)&(p<112)),'owner bounds') +need(np.all(cap[o,c]>0),'declared source child') +need(np.all((lo[o,c]=0)&(z+w<=cap[o,c])),'actual widths and capacity') +binid=(o*K+c)*112+p +idx=np.lexsort((t,binid));bins=binid[idx];ws=w[idx];starts=np.r_[True,bins[1:]!=bins[:-1]] +cs=np.cumsum(ws,dtype=np.int64)-ws;baseline=np.maximum.accumulate(np.where(starts,cs,0));expected=cs-baseline +need(np.array_equal(z[idx],expected),'every chronological pending mask is a compact prefix') +used=np.zeros(T*K*112,np.int64);np.add.at(used,binid,w) +allcap=np.repeat(cap.reshape(-1),112);valid=allcap>0 +need(np.all(used[~valid]==0) and np.all(used<=allcap),'full used-bin mass') +idle=Counter(map(int,(allcap-used)[valid]));idle.pop(0,None) +H=Counter({r:n*N for r,n in L.items()});H.update(idle) +need(dict(H)==profile and sum(r*n for r,n in H.items())==65088*T,'independent complete histogram') +# Small semantic predicates test each independent gate on actual changed inputs. +controls=[] +def reject(name,test): + need(not test(), 'control accepted '+name);controls.append(name) +reject('duplicate helper',lambda: np.array_equal(np.r_[rows[0,1],rows[:-1,1]],np.tile(np.arange(408),N))) +reject('strict lower endpoint used as available',lambda: bool(lo[o[0],c[0]]=0 + i=len(self.to);self.to.extend((v,u));self.cap.extend((int(capacity),0));self.adj[u].append(i);self.adj[v].append(i+1);return i + def maxflow(self,s,t,limit): + total=0;n=len(self.adj) + while total0:net.add(ss,n,b);target+=b + elif b<0:net.add(n,tt,-b) + got=net.maxflow(ss,tt,target) + assert got==target,('copy circulation',copy,got,target,dict(dg),dict(db)) + selected=[];wc=Counter();gc=Counter();bc=set() + for key,e in handles.items(): + n=net.cap[e^1] + assert n in (0,1) + if n: + b,w=key;i=bucket[key].pop();selected.append(i);wc[w]+=1;g=int(bin_group[b]);gc[g]+=1 + assert b not in bc;bc.add(b);db[b]-=1;dg[g]-=1;copies[i]=copy + assert len(selected)==408 and wc==Counter(dict(zip(W,INV))) + assert all(n<=group_n[g] for g,n in gc.items()) + assert max(db.values(),default=0)<=R-1 and all(n<=(R-1)*group_n[g] for g,n in dg.items()) + stats['flows']+=1;stats['max_nodes']=max(stats['max_nodes'],tt+1);stats['max_edges']=max(stats['max_edges'],len(net.to)//2) + return copies,stats diff --git a/research/retimed-t488-composition/owners/upstream/portable_expand.py b/research/retimed-t488-composition/owners/upstream/portable_expand.py new file mode 100644 index 0000000000..1b9457c520 --- /dev/null +++ b/research/retimed-t488-composition/owners/upstream/portable_expand.py @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Reconstruct the S8 mixedT61 literal owners by deterministic integral networks. +No optimization is run. Requires explicit OWNER_SOURCE_REPO. Expected payload is the fresh independently audited T488 output, never a predecessor owner receipt. +This optional reconstruction takes several minutes and does not run admission. +""" +from pathlib import Path +from array import array +from collections import Counter,defaultdict +import argparse,gzip,hashlib,json,time +import importlib.util +def module(name,file): + spec=importlib.util.spec_from_file_location(name,Path(__file__).resolve().parent/file);m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m);return m +_candidate=module('t488_candidate','verify_candidate.py');candidate_check=_candidate.check;v=_candidate.v +common=v.common;HERE=Path(__file__).resolve().parent;W=v.W;INV=v.INV;LOCAL=v.LOCAL;P=v.P +def check(cert):return candidate_check(cert,'concatenated') +copy_colors=module('t488_network','integral_network.py').copy_colors + +def authenticate(): + pins=common.read(HERE/'INPUT-PINS.json') + for rel,digest in pins.items(): + if common.sha(HERE/rel)!=digest:raise ValueError('changedbuilderinput '+rel) + return pins + +class Rows: + def __init__(self,calls,task_width,task_bin,owner,child,port,order,dispatch,providers): + self.calls,self.width,self.bin,self.owner,self.child,self.port=calls,task_width,task_bin,owner,child,port + self.order,self.dispatch,self.providers=order,dispatch,providers + def __len__(self):return len(self.calls)*408 + def __iter__(self): + offset=array('B',[0])*len(self.owner) + for t,tasks in enumerate(self.calls): + pool=defaultdict(list);pid=self.dispatch[tuple(self.order[t])] + for h,w in enumerate(self.providers[pid]['widths']):pool[w].append(h) + call=[] + for i in sorted(tasks,key=lambda i:(self.width[i],i)): + w=self.width[i];h=pool[w].pop();b=self.bin[i];call.append((h,b,w)) + assert not any(pool.values()) + for h,b,w in sorted(call): + z=offset[b];offset[b]+=w + yield [t,h,self.owner[b],self.child[b],self.port[b],z] + +def write_fill(path,rows): + payload=hashlib.sha256();prefix=json.dumps({'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[]},sort_keys=True,separators=(',',':'))[:-1]+',"rows":[' + with path.open('wb') as raw,gzip.GzipFile(filename='',mode='wb',fileobj=raw,compresslevel=1,mtime=0) as out: + data=prefix.encode();out.write(data);payload.update(data) + for j,row in enumerate(rows): + data=((',' if j else '')+json.dumps(row,separators=(',',':'))).encode();out.write(data);payload.update(data) + data=b']}\n';out.write(data);payload.update(data) + return dict(rows=len(rows),sha256=common.sha(path),payload_sha256=payload.hexdigest()) + +def main(): + ap=argparse.ArgumentParser();ap.add_argument('--out',type=Path,required=True);ap.add_argument('--owner-check',action='store_true');a=ap.parse_args() + pins=authenticate();cert=common.read(HERE/'CANDIDATE.json');primal=check(cert);S=cert['S'];G=cert['groups'];T=61*S + assert T<65616 and S<=128 and len(G)<65616 and 549*S*408<2**32 + c=common.context();order45=cert['order'];win=c.owner.windows(c.template,order45,61);groups=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items(): + for p in range(112):groups[cap,lo,hi].append((o,ch,p)) + groupkeys=sorted(groups);assert [[*g,len(groups[g])] for g in groupkeys]==G + # Source child windows sharing a physical family are pairwise disjoint. + fw=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items():fw[o,c.families[ch]].append((lo,hi)) + for intervals in fw.values(): + for j,(lo,hi) in enumerate(intervals):assert all(max(lo,l)>=min(hi,h) for l,h in intervals[j+1:]) + xg=defaultdict(list);zg=defaultdict(list) + for gi,q,n in cert['x']:xg[gi].append((q,n)) + for gi,t,w,n in cert['z']:zg[gi].append((t,w,n)) + task_width=array('B');task_bin=array('I');bin_group=array('H');required=array('b');macro=[array('I') for _ in range(549)];bin_ranges=[] + for gi,g in enumerate(G): + bstart=len(bin_group);available=defaultdict(lambda:array('I')) + for q,n in sorted(xg[gi]): + widths=[w for w,k in zip(W,q) for _ in range(k)] + for _ in range(n): + b=len(bin_group);bin_group.append(gi);required.append(-1) + for w in widths: + i=len(task_width);task_width.append(w);task_bin.append(b);available[w].append(i) + cursor=Counter() + for t,w,n in sorted(zg[gi]): + ids=available[w][cursor[w]:cursor[w]+n];assert len(ids)==n;macro[t].extend(ids);cursor[w]+=n + assert all(cursor[w]==len(ids) for w,ids in available.items()) + assert len(bin_group)-bstart==g[3]*S;bin_ranges.append((bstart,len(bin_group))) + assert len(task_width)==549*S*408 + actual=[array('I') for _ in range(549*S)];group_n={gi:g[3] for gi,g in enumerate(G)};stats=Counter();t0=time.monotonic() + for t,indices in enumerate(macro): + colors,stat=copy_colors(sorted(indices),task_bin,task_width,bin_group,group_n,S) + for i,cp in colors.items(): + actual[S*t+cp].append(i);b=task_bin[i];gi=bin_group[b] + if t==G[gi][2]:required[b]=max(required[b],cp) + stats['flows']+=stat['flows'];stats['max_nodes']=max(stats['max_nodes'],stat['max_nodes']);stats['max_edges']=max(stats['max_edges'],stat['max_edges']) + if t%40==0:print('PORTABLE_CALL_DECOMPOSITION',t,'seconds',round(time.monotonic()-t0,2),flush=True) + assert all(len(call)==408 for call in actual) + owners=array('H',[0])*len(bin_group);children=array('H',[0])*len(bin_group);ports=array('B',[0])*len(bin_group) + for gi,(lo,hi) in enumerate(bin_ranges): + base=groups[groupkeys[gi]];m=len(base) + for j,b in enumerate(sorted(range(lo,hi),key=lambda b:(required[b],b),reverse=True)): + cp=S-1-j//m;o,ch,p=base[j%m];assert cp>=required[b] + owners[b]=o+61*cp;children[b]=ch;ports[b]=p + order=[[s,r+61*cp] for s,r in order45 for cp in range(S)];basedispatch={(s,r):pid for s,r,pid in cert['dispatch']};dispatch={(s,r+61*cp):basedispatch[s,r] for s,r in order45 for cp in range(S)} + providers=common.read(HERE/'PROVIDERS.json') + for provider in providers.values():provider['actual_paid_profile']={int(k):v for k,v in provider['actual_paid_profile'].items()} + for pid,provider in providers.items(): + assert provider['widths']==[w-int(h in (389,397)) for h,w in enumerate(c.providers[pid]['widths'])] + assert provider['actual_paid_profile']==LOCAL + a.out.mkdir(parents=True,exist_ok=False) + for name,obj in [('ORDER.json',order),('DISPATCH.json',[[s,r,dispatch[s,r]] for s,r in order]),('PROFILE.json',cert['profile']),('PROVIDERS.json',common.read(HERE/'PROVIDERS.json'))]: + # The source profile file uses indented sorted-rank formatting. + if name=='PROFILE.json':data=json.dumps({int(k):v for k,v in sorted(cert['profile'].items(),key=lambda kv:int(kv[0]))},indent=2)+'\n' + else:data=json.dumps(obj,separators=(',',':'))+'\n' + (a.out/name).write_text(data) + assert common.sha(a.out/name)==common.read(HERE/'EXPECTED.json')['literal_files'][name],('changedliteralinput',name) + rows=Rows(actual,task_width,task_bin,owners,children,ports,order,dispatch,providers);made=write_fill(a.out/'FILL.json.gz',rows) + expected=common.read(HERE/'EXPECTED.json') + # Container bytes are provenance only: zlib streams may vary across runtimes. + assert made['rows']==549*S*408==expected['rows'] and made['payload_sha256']==expected['payload_sha256'] + assert primal['profile']=={int(k):v for k,v in cert['profile'].items()} + report=dict(status='PASS_STANDARD_LIBRARY_SEMANTIC_LITERAL_REPLAY',replicas=T,calls=549*S,roles=len(rows),physical=896*T+509,materialized=made,decomposition=dict(stats),primal=primal,fresh_retained_owner_check=False,scope='Fresh mixedT61S8 exact integer networks and literal generation. No predecessor owner receipt is reused as candidate proof. Fresh independent literal audit and full release required.') + if a.owner_check: + fill={'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[],'rows':rows} + result,_,_=c.owner.check(T,order,fill,dispatch,cert['profile'],c.plan,c.template,providers);report['fresh_retained_owner_check']=True;report['owner_check']=result + (a.out/'PORTABLE-REPLAY.json').write_text(json.dumps(report,indent=2,sort_keys=True)+'\n') + print('PORTABLE_REPLAY_PASS',json.dumps(made),flush=True) + +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/owners/upstream/source_context.py b/research/retimed-t488-composition/owners/upstream/source_context.py new file mode 100644 index 0000000000..9731888ac7 --- /dev/null +++ b/research/retimed-t488-composition/owners/upstream/source_context.py @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Solver-independent integer primal check of the new aggregate owner flow. + +Standard library only. Source geometry is read from the attributed frozen source +template through its retained window routine; literal copied owners are checked +separately. This certifies one finite primal, not LP optimality. +""" +from pathlib import Path +from collections import Counter,defaultdict +import sys,json,gzip,hashlib,os +if not __debug__: + raise SystemExit('unoptimized Python required by retained owner engines') +HERE=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'): + raise SystemExit('OWNER_SOURCE_REPO must identify the declared source checkout or export') +ROOT=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +P=ROOT/'research/coupled-carrier-cap740' +# Authenticate every imported predecessor before executing any of its code. +_pins=json.loads((HERE/'SOURCE-PINS.json').read_text()) +for _rel,_digest in _pins['repo_files'].items(): + _path=ROOT/_rel + if not _path.is_file() or _path.is_symlink() or hashlib.sha256(_path.read_bytes()).hexdigest()!=_digest: + raise ValueError('stale retained source '+_rel) +import types +common=types.ModuleType('staged_owner_retained_common');common.__file__=str(P/'common.py') +exec(compile((P/'common.py').read_bytes(),common.__file__,'exec'),common.__dict__) +W=(4,5,6,7,8,9);INV=Counter(dict(zip(W,(26,2,18,52,97,213)))) +LOCAL={1:2439,2:726,3:224,4:102,5:20,8:8} diff --git a/research/retimed-t488-composition/owners/upstream/test_owner_guards.py b/research/retimed-t488-composition/owners/upstream/test_owner_guards.py new file mode 100644 index 0000000000..cfe733e60f --- /dev/null +++ b/research/retimed-t488-composition/owners/upstream/test_owner_guards.py @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Apache-2.0 +import pathlib,json,copy,subprocess,sys,tempfile,shutil,importlib.util +P=pathlib.Path(__file__).resolve().parent +def need(x,m): + if not x:raise ValueError(m) +def main(): + count=0 + with tempfile.TemporaryDirectory()as t: + d=pathlib.Path(t);out=d/'must-not-exist' + for name in ('verify_owner.py','verify_candidate.py','portable_expand.py','independent_literal.py','integral_network.py','source_context.py'): + r=subprocess.run([sys.executable,'-I','-O','-B',str(P/name),'--out',str(out)],capture_output=True,text=True) + need(r.returncode and 'Enabled assertions required'in r.stderr and not out.exists(),'optimized gate '+name);count+=1 + q=d/'corrupt';shutil.copytree(P,q);(q/'CANDIDATE.json').write_bytes((q/'CANDIDATE.json').read_bytes()+b'x') + r=subprocess.run([sys.executable,'-I','-B',str(q/'verify_owner.py')],capture_output=True,text=True);need(r.returncode and 'frozen owner artifact'in r.stderr,'certificate corruption');count+=1 + spec=importlib.util.spec_from_file_location('check_controls',P/'verify_candidate.py');v=importlib.util.module_from_spec(spec);spec.loader.exec_module(v);x=json.loads((P/'CANDIDATE.json').read_text());v.check(x,'concatenated') + for field,value in [('order',x['order'][::-1]),('groups',[]),('inventory',{}),('profile',{}),('local_profile',{}),('dispatch',[]),('baseT',53)]: + d=copy.deepcopy(x);d[field]=value + try:v.check(d,'concatenated') + except ValueError:count+=1 + else:raise ValueError('accepted semantic corruption '+field) + print('PASS_OWNER_GUARDS',count) +if __name__=='__main__':main() diff --git a/research/retimed-t488-composition/owners/upstream/verify_candidate.py b/research/retimed-t488-composition/owners/upstream/verify_candidate.py new file mode 100644 index 0000000000..9da29b43eb --- /dev/null +++ b/research/retimed-t488-composition/owners/upstream/verify_candidate.py @@ -0,0 +1,45 @@ +import sys +if not __debug__ or sys.flags.optimize:raise RuntimeError('Enabled assertions required before owner replay') +from pathlib import Path +from collections import Counter,defaultdict +import json,os,importlib.util,hashlib,argparse +P=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'):raise ValueError('explicitOWNER_SOURCE_REPOrequired') +s=importlib.util.spec_from_file_location('actual_owner',P/'source_context.py');v=importlib.util.module_from_spec(s);s.loader.exec_module(v) +def need(x,m): + if not x:raise ValueError(m) +def check(d,kind): + # Regenerate expectedclock from authenticated actualinputstreams, not candidate fields. + import gzip + pins=json.loads((P/'INPUT-PINS.json').read_text()) + for rel,sha in pins.items():need(hashlib.sha256((P/rel).read_bytes()).hexdigest()==sha,'inputpin') + a=json.loads((P/'ORDER37.json').read_text());b=[[i,j+37]for i,j in json.loads((P/'T8-ORDER.json').read_text())]+[[i,j+45]for i,j in json.loads((P/'T16-ORDER.json').read_text())] + if kind=='concatenated':order=a+b + else: + from fractions import Fraction as F + order=[z[2]for z in sorted([(F(2*i+1,666),0,z)for i,z in enumerate(a)]+[(F(2*i+1,288),1,z)for i,z in enumerate(b)])] + need(kind=='concatenated' and d['order']==order,'actualsourceclock'); + providers=json.loads((P/'PROVIDERS.json').read_text());pins=json.loads((P/'ARTIFACTS.json').read_text());need(hashlib.sha256((P/'PROVIDERS.json').read_bytes()).hexdigest()==pins['PROVIDERS.json'],'providerpin') + for provider in providers.values(): + need(Counter(provider['widths'])==v.INV,'providerwidths');need({int(k):n for k,n in provider['actual_paid_profile'].items()}==v.LOCAL,'providerlocal') + c=v.common.context();dispatch=[[ss,rr,c.dispatch[ss,rr]]for ss,rr in a]+[[ss,rr+37,pid]for ss,rr,pid in json.loads((P/'T8-DISPATCH.json').read_text())]+[[ss,rr+45,pid]for ss,rr,pid in json.loads((P/'T16-DISPATCH.json').read_text())];need(d['dispatch']==dispatch,'actualdispatch');win=c.owner.windows(c.template,order,61);g=Counter();fw=defaultdict(list) + for (o,ch),(cap,lo,hi)in win.items():g[cap,lo,hi]+=112;fw[o,c.families[ch]].append((lo,hi)) + need(all(all(max(lo,l)>=min(hi,h)for l,h in rows[i+1:])for rows in fw.values()for i,(lo,hi)in enumerate(rows)),'disjointfamilywindows') + G=[[*k,n]for k,n in sorted(g.items())];need(d['groups']==G,'actualgroups');S=d['S'];need(type(S)is int and S>0,'positiveintegralS');need(d['baseT']==61,'baseT');need({int(k):n for k,n in d['local_profile'].items()}==v.LOCAL,'candidate local profile');need(d['widths']==list(v.W),'widths');need({int(k):n for k,n in d['inventory'].items()}==dict(v.INV),'actualinventory') + xb=Counter();xw=Counter();idle=Counter();seen=set() + for gi,q,n in d['x']: + need(type(gi)is int and 0<=gi=0 for z in q)and type(n)is int and n>0,'patternintegers');need((gi,tuple(q))not in seen,'duplicatepattern');seen.add((gi,tuple(q))) + used=sum(w*z for w,z in zip(v.W,q));need(used<=G[gi][0]and sum(q)<=S,'patterncapacity');xb[gi]+=n + for w,z in zip(v.W,q):xw[gi,w]+=z*n + if used0,'flowintegers');need((gi,t,w)not in seen,'duplicateflow');seen.add((gi,t,w));need(G[gi][1]