{
  "schema": "flowrs.registry.index/1",
  "keys": [
    "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf"
  ],
  "packages": [
    {
      "name": "board-pico-w",
      "version": "0.1.0",
      "kind": "board",
      "hash": "sha256:d9c4ae03c6a38f95932967a88c4d6074189bed775a0d0b67a48d457a070ed504",
      "archive": "packages/d9c4ae03c6a38f95932967a88c4d6074189bed775a0d0b67a48d457a070ed504.fpkg",
      "size": 5994,
      "record": {
        "record": {
          "schema": "flowrs.registry.record/1",
          "package": {
            "name": "board-pico-w",
            "version": "0.1.0",
            "kind": "board"
          },
          "hash": "sha256:d9c4ae03c6a38f95932967a88c4d6074189bed775a0d0b67a48d457a070ed504",
          "manifest": {
            "schema": "flowrs.package/1",
            "name": "board-pico-w",
            "version": "0.1.0",
            "kind": "board",
            "licence": "Apache-2.0",
            "description": "Raspberry Pi Pico W: the Pico's RP2040, UF2 flashing and header pins, none of them the GPIOs its CYW43439 radio takes.",
            "provides": [
              "rpi_pico_w"
            ],
            "data": "pico_w.json",
            "tests": [
              "the_board_reads_and_is_the_pico_w",
              "its_chip_and_flashing_are_the_picos",
              "its_pins_are_the_picos_and_none_is_the_radios",
              "the_harvested_catalogue_agrees"
            ],
            "needs": {
              "network": [],
              "filesystem": []
            },
            "ports": [
              {
                "of": "rpi_pico_w",
                "port": "adc",
                "output": false,
                "unit": "V"
              },
              {
                "of": "rpi_pico_w",
                "port": "gpio",
                "output": false,
                "unit": "none"
              },
              {
                "of": "rpi_pico_w",
                "port": "i2c",
                "output": false,
                "unit": "none"
              },
              {
                "of": "rpi_pico_w",
                "port": "spi",
                "output": false,
                "unit": "none"
              },
              {
                "of": "rpi_pico_w",
                "port": "uart",
                "output": false,
                "unit": "none"
              }
            ]
          },
          "conditions": [
            {
              "id": "compiles",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "it builds offline, confined, against flowRS's crates and lock (2 test binaries)"
            },
            {
              "id": "tests",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "4 passed, each binary confined (4 named in the manifest, all passed); 0 ignored; doc tests are not run"
            },
            {
              "id": "no_runtime_install",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no program started and nothing written outside its directories, built and run confined; every crate is one flowRS's lock pins; no process or library loading in its Rust (239 other denials, reads and lookups, recorded)"
            },
            {
              "id": "no_undeclared_network",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no socket and no name lookup, built and run with the network denied; no socket API or network crate in its Rust"
            },
            {
              "id": "units",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "5 ports read from its code, each declared, each as the manifest says"
            }
          ],
          "toolchain": {
            "rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
            "cargo": "cargo 1.99.1 (5f94df478 2026-08-27)",
            "host": "aarch64-apple-darwin",
            "sandbox": "seatbelt",
            "observation": "kernel reports read back (canary seen)"
          },
          "flowrs_commit": "448d1c56275905b7322e0eb9853a61ca0214ac67",
          "verified_at": "2026-10-31T13:55:21Z",
          "verifier": "flowrs-registry 0.1.0"
        },
        "signature": {
          "v": 2,
          "key": "dc5d537054e6ca29b068f7a4375d0e8140af371410bd357235a146ef44d94ed33b6dfbe9c7a7ac772ec9d9ddaae7ca7b8028c9e163e39bfef3192748d9dd4e9ec4e6a705462ab98fbf030e294f78eadadd10122b0bd93a146be65c19751d4ec6eabf441d7e841630c495b2d57f41283232c45b3b4bb774c41be1bce61d551264603a500f3f387950685e4576dc280247b88fcf4dec7ee268e4d487b127d0bf79fd7a9d337e51d2c29d981f3f1b89afffbabff3f20077a90af83de9b4e0c75793d7d988857556d556e7c137c3917468f1d3a09a2066145d371ddf0ac2c37372974741d4e442e02a3c5e4c5e41f7222a54b3b3727610118f93b3d5ffc2bd2d2f7f91c8335ec0f840bfc4de7a43575f3b2db7eecb6f9585a37fb5908493d024d74e63b2dc945ea2f18ce3c542cacc0d64abeea6cb301ca8b22dc8d3cc3b7ee1b0999b62d6e8221d2c6b7f527a16ddaf9a8fb8fd2d94d90f6f4e6738015d9fd0e9fd47ff80c3aea251b570ebd0f16cb917fa39d6adca0e5359ccae44a4f4668314c263d85c336bb01d981e87ba267655232b095ba02bfc402257a5a1832f2a55f18aa5e94a75add7c7b77ce763773d3f57e326e45a7aa5de1bd6e3ee0b2f87a565494732a5c9bc15f442358a44f5093f32b7e4ab176afde3af7eff0af88cf4ee1870616252e75c639b54e7f4ccda08c7139488356b71fedae03c6c30a767311a1a7170ee04423d3476c85102287cedfaa5935a3d69737903a479f3051b254e3e90b97802497ec4ce32a3798df2436a1ac684b41c661f395251a286ea179c6011b98fc6cf34fe2408a2968478e30bb06e62ac6477cd32d5d9d560f65c5ae9d0ff66721629f8c00f06ebd229b68ea17dfbedbc3f05cf6211e26c163eabd213127808fbef5ac91d7f7cf0da00a96a40af412860080c7c558ae1e820bd55b6be4dd2e2337bdd783a081863b89185e1d9c09595ad43b7a6aba9f37546ca8bcce7eb674e0077732839c9af8337c01f48b6b75faa9f3390052b3f8246b33140f88401adbaeaaf82f50c75cd6393c83f4e742888d6952dddca0114e114758c124dfb77121fd348bc83588155ff82ba1a5dea3cc9aeaee08c5d853b7ac6b6066efe849f731ceb5594027bf8d8dc7984924d901cee0e1dc3b097f7d4616c689f9b082bb8d88a13846afdd96206a09b6f208fb85d830d429da755e404a8d48d2d5df94ecfa19c1f7ac92b9f8e2d1fe515932571f96acb264209acc35ed3ae5ab790fbc9dcb2e30a7dfdd61c944e5e6930a0344b38697887dc68eed1574750003138fc181519a56598f53bb216e264d7a9ea990d87194798e62153189e7bb5c015bb4d0dca87d453a50b5cfe93e8929366d2f743c40074bbb88f9b62ce65676685db60a21ac41761b08e1d9a9604a10ac7e38cc90c7dd610c69d9751d77fb13b0eb91df5ecb145b48b85c039fecf576d65bb3c29ca5273e0d5bacf0c7ef1eb61a94cda9a1a2002ef69e62578069533d287d2efb01ded3e44961ae9ea096f90ecc95930c25a3db3e3a8a116b23e33126c932bd6f3e427d559d64272e03f94c1e3aeceed574aa4c2c5745ebe5ac61db1bc7b4ab199ec55fee156be6ae5ba44296074237f355e4df01d13a8a212fa731c6510d0c43a5fc338a3392272550a10a328cdb1409e9133bd0d79801bc6aa99e361930bee2946d2f7f705eb1be381fbdd6a0923cfc1778607577473344a3b85b67be5e31f5c2271abdccd74e7b149dece024919f358f6adbe46b76e74d8dc8a0ece0a0d278b1de87f67f0a7e6cf54f3cfd54c0a6a5b2143fd900d90c9be7626617ecabb8439c34ad2a4853a6593d51c48e11a31b442d18dab3b4bfec198115c0e1db747f1de7b708d0e95f3db3e8c2eb3baa23ad6d0312ee315a7c0de1bd852b1cb68d02334b8e3187ffe5cb5b6cd4b01a43329899db572f61d6e5dfe22c3862403bb5c836ecdee4206206ff549e1587f788a38c3af0a36db60e70bce08b7318470a0fc58efccf1e13a362b010a29df4c5ebbc8bbfeb26b35ab8aee6b46a223b9784467b9f5f864818e1d5d466d059a0cf7a3c41f5ac308d25a66c4c7611fcec595253a8159f0d0a2d34c7aaa1d6b27162046a95185b68121b81a618750f8ba84f401f217aeb664a66f6357bfc7b1702b6fd34ffe1a32010584c3a84468de88a92c93ab5bd840ba52cc8ea4e9a68ded4acfc624031ec2443287877886db6efc64af01f7bf80782f8c5b3dda3b4cb5c3425028d7ef7f8f4177d437a61787ad6b325cd79ddcc3bfd9e1092ef118524e6c7c745b28ba8407ced9055d48c7275e1caadb88ea67bfdbe66563603de244bd3740b82153df340cc70c6ca947d6da9eb126e627666370e266aab079582e633fbad606c1535e4a15a25acb5efd4ae0cfeb03eeeb01a52d1ac3a5486cde1a151f7950fd5b68df976e843ceaa4d1e7c1644fa82984ec7d8405c6950674c3c3eeeb8a28aba272a244b26a11e07935a1ae362b1b3ddf900006fccc7b798b1ee73c8d4ae2245fad870924c4ff82ca92befb3aa6c960a19983c77f9d563d6fd529600f19897359ff641cd8db26cf065375094b0508c822809dd888cb3de0248177825e042f759505459036177c9c2e38f81806fdd183579f135019492e1e05b64a28fee0a7f48903aa9bf4d3a5bc73f0b15db50e2ead4b03e09c84d5687a17b5f5dd59e84934a5793994d73f74ae58fdb78030888cf8bad5c6f22942b241d8ee50be649668b15571968c796afcb5f749787bced05678144b2185aee171244291d7caf3d6a3c89b82f0ba02166938",
          "key_id": "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf",
          "ed25519": "8bd3607f8a3fcdb65abc3e9f89615365456336dc9666af832bc39172fa59ea20d222551b071ff548d2350a1fa66543807bb62b5996ef229db76a7ed62ec06009",
          "ml_dsa_65": "46679ab44b6244910468dc6b83f0ddfb86898433c8a818898aa12774969f5fd00260d10e6b8b1304b5177a7c2f0c8274a2d092289575d7d22614164fd9d1f7ae844eec552168d3bf23ed0d18df424cb3209a8d561c187e5843dafb1666bdeb3b25e7d8d5af2f07a8b7615ee0b7d80aff4cb6794dbc7e33b397200b10234e05f2b2abcc86fab72892b406fe731ace7197dfb493ebf760545d2d6698e3a64b4e3c84ef1b67f31bdf4a0c228d152dcb0d7108fc07d96578e002a32cb36d98b5f8319cc69caf4245e77c142b1dfb3bff2fc934f729a965e899386c55f7e8db29253278e18c029a159bfee71fc5c9af40d074e2d28887b24a4efc6f1b62ce1b5cbe1943f72608717e48587406cfdea8f6fa86c801e2c02dbc67fd81a6ff939f4ec3766ba2ca698fbb97feec09fc71f05abf24df8b3e643663033558885e298b2a978b60db3635e356efca17a067aa510f953b4c9cac4f5ed3cf9b24a3e547e97683c36933719c7ff35fcba040a80cad483b9f810ac3dab062a7d2a663f0d0c85deef26f94a5f3ea7b68a8be7b17abb2d0ddffa2e3ba51a820f1f84f6319c4a62484e22925b69a583bfb369d7cf5fa889aa4fffbaf742f31da87c2c02cc7bf3b845f53bc8f8e94bbe6b43be8d306046ebd0e017ed8c0061e7e969e8ddca7848ce36f4fa043104224a76d27009381f7416c5538b23dffaf1cdc087acac3acdd5905fd7129e5be3e74ca2a318a6ab03b7da4d3e9a43ba884058bda1748859934cea71b97ceab86ab05a0d1d1073a91ba79c5f73b90dba2120e3278d27ba9302d16d3d1fd8635a741eba8159230f993a2dad75f4ba2f2d9394c7834734b64f3a0fd72df6a154f42894048692612856b96fa5f168108fd31edea80aad8ac47c1306d57112766aff203e523e845fc9f534d36b262f22ccc5ada3eff61612bc8d80cbd88e4c4c8c6f308f939a58aba274bcd96226bc1146781e45ebee7953ec89aef3a84ec724d3c7a6ed5b5c0db6df8b311241bf1d0aaeffe403c4acd3e532c2cbc94e10f57fea7d2202daeca7ac60689a555fa06f30ebfde766aaa00e25a4aa97dc1de013d17166f0e7f0449bae2c15e32b00bc921a74008748000e54e16a9cbc8c35db005b8b380e8ee315a2df284441bd73622ab9fb597c7baeabedd69243b40a4fd14899d82f3f23284d0d027d5e2521e73c8028f5e8d8f09b735761194b3b9f8a6a5a66034061c5943d639d93effebd7717a84b9a1ddb1318bb287f6ff0aec4ae212b0ddb92d4e04e6d06952ff4ebc27ceaaf32c10f125ec4a6a1c50c551b8415e6282512345ec8bd144c2e2cdda2d428865ed6f09246511b23cccbe961b1939a0ab13c1b7f053691e8d39abc8e10a5c327a93aab7fb89fc1adbdbd62680bb05233d3cd375aa6d8b70f9739732cdc31231749a4966cc9cb6144a7a139b974879194b53bde956bc9ca5162fd853e81afdf723004299d4a0bad095530ce2c025d9b3d3ca406b68ee6da8d9d286f7c8a20352ab5f2f08ace168ccb9a8c50519a998f4a53ea59c931e0443796a814adea5ea98159290b61c4e59037fd566cfdc5ad489d250da1e1f2e808319f5ce0dcdab7158ad8ad2c0f02bdce916f04204eb099f066aef8ccd79e447f2eb69f206afa2b0bb45cbbb1a6b6babcb7473b9dbf8927992c8c843e2f01df8c6b7e4569e1220d2698612eb0557496fbc13dc9ea6a776c37a0a8178c92936faafd6137f2a08848c6cc5f050212edf3b51fbcc5495e6e037575d1e91f967c3351428c92ff4e9f8cc49a700d74cd43c05ed3c4eeeed7a478d22a902d6410e6fe09a8298309c9f11f2fdadfe5db2f5829a5a0fc05d38c83ce7911293371d6289c38589ae0ad50c66c4affe421cbba63dc8cfd5f115cd6ffadf3efb5452c56db7e59b3a160de3755f42ba8fa7e70f345af7c859112d15425f52fa4e0f8a886f1e8dd0d48f50e52a8b6001d2e2157ca48c36b213661d73343136a6a841c5d6bf2d59b9643465f0c7ff1b4436f5427dc5cb54b02b8395c4659beee8f78b47e05f34f406b49c9215837d0e8c40da39454ad6ddc2cf7c418478e0268650b5c30b696ecdb1f82197253b5298fc324d9860471a7b77de56177e45971ab38077a5914ae44548d20f81f7cb62e84fe3505f74d545afa57f044832fb3f78c5632c876b0883307b9b6665af7f15a8b2242480b983c9f8ddd684fbdb9384a02b83fb50035a9c2fc0ad2520d0f135d86f6f608a58355bdf1b08bbaf241d30796afd92748d3d8e91ff92cf8b9136e90625ad7abdd12abe044b8ad047d4c651aadbf66b3fb762b95e793ba5d7cc57dc2294b388e4f73f0d31326721114abb817d5419d00cd73f7869282dad4b6af9ab25fa3e5cda7ba370428dd5ced5691f30f5d82e0d82b26fb7186719a047d92fd4ea5058142363960b610f54f48dfc994e03d172d6d55d8a6d10707ccedde905856921fd6e3a255d821560576e1c481287128468d420d1e6febd789e7156ea802ed05b0abea212e271229c2d55fce88f8f0bba034087dfa52b274f1a172a23287d9b5346557a5e6f6528fb6c5adafc61a6a60e1fd1a964b6e9f01a8bb2538c44b0da4e2d350e7fe3f1b83e4baebf557aa36ceabebec7771720f7c1b6b154a9095656f1e98315f240810dad90bb976de30870f58ba026b48d785c62256ed9963ac26f7470f6b53f2fb26f95e78d9bc428fbee3e8211fa639ce652776bc7a3110d6c933760cba96c10b66cc0e74458e22f2b1aff81a3c8646ae45bae2997c9b90fc3c6622c8c1a72f45b03fc1d98944da0cd98b08ce1d33e53a9dca2f9fe308bab3a1842c38d164e067053e4eb597fd6b5b82c321ac1f8f8b05dfdfbf3d6b279eca1e048f0a2693a6c8c7964c3f3d211d68e966f4777230709ede1a80d8aae5dfbcbb3c224705578fe3e672ca3b4bc35a95470e8da8884e7c984ae915b15804d39d421731fdc32f24628b887980dd8f6b844937591a5772c57c110341dbe091e85b2e648e1597178744968a9679b756ef4b9dd8fb138c449ed7d6abaa47579d0b7f838f7661b13a4ed3045311a3da3972651ced96b87b266156d330ba6e7736c07e29efe29ecae5fddef1c5dd4eb6f5666f62af4e0cd5ca46b1027f0f1a7fdac52e4fd62c308bf16776854c2c3eb7509bf82a906544c49557e44aca466879ba4ad001a1c7b517b5213cd98a123194a43e4ca1166e5ae92e539aee122579b2aa857ede9d7b58ec7a601fd621fa3075ee953cf0a40d57c28ca41ac28dcd68a9804f932edc895c9baa1fde1e688d8ffdc396ad158b2b93e5fb1c4edb6a203c0a08d5ff34d48dc772bf076bed236adc9d8109b20c590e65d2bfa94cc57cffdf591b99694997a2bfd47e91e5aeebdac931d5e0125e513046312810390e69090103bfd4326446f64ed354cdb48232c5b796077d13bd64ff40cdb8f6408a7e99146ccd2a0b23f9e37904f60380dbe6d2e447339effaa3b2d66302306878feddb03cd4d76377c2da8ba601ff52f8f67a60efa63bfa5acb7bbbfccea0f88a013ca343be662c10ab56c053f43da529d83432843cff2e7d71c32185ebd679b7fa1eebcad63b8c08751154dfb3353f621ee5028c771fa7ce076035e0c46bf2d4938af7147a2e9106683b1aa8323dc925d4bb7f8463cd85ff3f5612943f71218cdeb6900dc5050f90b1bd6ac03bb30184138b3a81e59983125f482a7eafc8a8a97c4a4d095913ce360c3d83c9d41f15795fd05a4b03130835162f47ab2133c57243da69299b349fba2e77cf68ef48bea1a11ce9bc7aa0f6db749a4e36af91b391506d6de33de0c14ef69e4df000be9c5ab3b5e128e624f49de385b74c828ad978b6cdfaa18d66ec3c16007206948a4225ed0fb94461e85becf0dddb93124d5374bf8422855d27edfe6ccff60e928960483dbbc0a87ad5049dd80d1be1e7d9d4c52bc9433f9190794eb5b562d6fb0ac66d8b66340db4758e9c0499a5b0795f1737c4611423fdaf07465b8bd78c3599003f5467a08d73b5e0cefede92de4e4ae63e035914a5b29122a276c68f86a1821190dce7d0093d6e7364a4305b2a20b40b5736c1484f9566cfe18af16c41ec9e18fe5f5db651acc709de6c7c8c2ee80756fe9c3760836a68054b48c00c0f3a3c214a82b2abf91c03d831f34b4feba1323702a99e2d0eb6ae7de8544e600bcfea3b256774c253d83e6938c70359ad1de4c30fce451134d2f260853f3ec7c8cd07412bbb34333bd98e8d638a660ab18a0370e28b79921140c012885ddd34378cb755de305ff05d4418d178a5dc302c1221ed1662205a92bef58aec5a45ab3d2a10853ad1aabfb99b51ab6783836ff35ced82bc764c42086df02e188bff0e7c23c56ede8fcff5e771cf3174a45cc777c95fa259128118b2fbd3a19ec7a487feee4c055d2b2f4442c123e666326577536339a2cbda4571962d849d7490001baede725f16f30cffc335029c6e7153568acbc3158e3f8a9d7a106959a4bd1bb8eaddfd7429889c5d25ad3e49807cff7dea92946e1e12d50293040f748cb4a0dfe7d3e01424a73a8e5b0b37a55cee4ff3d759216b5c0c717f6970e408bbbbd272981d7fa8b3b5c9f776df060a187b9fc3eefc071e4148515474dbe33b7899aab6bd244a8692cee0e2eafa00000000000000000000000000000709111a2029"
        }
      }
    },
    {
      "name": "dialect-opentap",
      "version": "0.1.0",
      "kind": "dialect",
      "hash": "sha256:31717f0f97f98f839b369b9d4b49ebbd62a34d999aca5648c82231fd16865a4e",
      "archive": "packages/31717f0f97f98f839b369b9d4b49ebbd62a34d999aca5648c82231fd16865a4e.fpkg",
      "size": 25006,
      "record": {
        "record": {
          "schema": "flowrs.registry.record/1",
          "package": {
            "name": "dialect-opentap",
            "version": "0.1.0",
            "kind": "dialect"
          },
          "hash": "sha256:31717f0f97f98f839b369b9d4b49ebbd62a34d999aca5648c82231fd16865a4e",
          "manifest": {
            "schema": "flowrs.package/1",
            "name": "dialect-opentap",
            "version": "0.1.0",
            "kind": "dialect",
            "licence": "Apache-2.0",
            "description": "OpenTAP TestPlan import: steps flowRS understands become nodes, every other step is carried foreign and counted in the coverage report. Export is refused rather than approximated.",
            "provides": [
              "opentap"
            ],
            "corpus": [
              "tests/fixtures/basic_plan.TapPlan"
            ],
            "tests": [
              "a_plan_is_detected_by_shape_not_by_extension",
              "every_step_is_accounted_for",
              "a_vendor_plugin_is_carried_foreign_and_named_in_the_worklist",
              "a_container_step_becomes_a_subgraph_so_its_children_are_reachable",
              "a_recognised_step_keeps_the_value_that_makes_it_that_step",
              "a_foreign_step_keeps_everything_it_arrived_with",
              "a_promoted_step_keeps_the_element_and_a_container_is_not_logic",
              "export_refuses_rather_than_emitting_a_plausible_plan"
            ],
            "needs": {
              "network": [],
              "filesystem": []
            },
            "ports": []
          },
          "conditions": [
            {
              "id": "compiles",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "it builds offline, confined, against flowRS's crates and lock (2 test binaries)"
            },
            {
              "id": "tests",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "8 passed, each binary run alone under seatbelt (8 named in the manifest, all passed); 0 ignored; doc tests are not run"
            },
            {
              "id": "no_runtime_install",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no program started and nothing written outside its directories, built and run confined; every crate is one flowRS's lock pins; no process or library loading in its Rust (257 other denials, reads and lookups, recorded)"
            },
            {
              "id": "no_undeclared_network",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no socket and no name lookup, built and run with the network denied; no socket API or network crate in its Rust"
            },
            {
              "id": "units",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "5 ports read from its code, each declared, each as the manifest says"
            }
          ],
          "toolchain": {
            "rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
            "cargo": "cargo 1.99.1 (5f94df478 2026-08-27)",
            "host": "aarch64-apple-darwin",
            "sandbox": "seatbelt",
            "observation": "kernel reports read back (canary seen)"
          },
          "flowrs_commit": "cfcc3328c10d1203c9d85d6d0518add2f27ff186",
          "verified_at": "2026-11-10T00:55:13Z",
          "verifier": "flowrs-registry 0.1.0"
        },
        "signature": {
          "v": 2,
          "key": "dc5d537054e6ca29b068f7a4375d0e8140af371410bd357235a146ef44d94ed33b6dfbe9c7a7ac772ec9d9ddaae7ca7b8028c9e163e39bfef3192748d9dd4e9ec4e6a705462ab98fbf030e294f78eadadd10122b0bd93a146be65c19751d4ec6eabf441d7e841630c495b2d57f41283232c45b3b4bb774c41be1bce61d551264603a500f3f387950685e4576dc280247b88fcf4dec7ee268e4d487b127d0bf79fd7a9d337e51d2c29d981f3f1b89afffbabff3f20077a90af83de9b4e0c75793d7d988857556d556e7c137c3917468f1d3a09a2066145d371ddf0ac2c37372974741d4e442e02a3c5e4c5e41f7222a54b3b3727610118f93b3d5ffc2bd2d2f7f91c8335ec0f840bfc4de7a43575f3b2db7eecb6f9585a37fb5908493d024d74e63b2dc945ea2f18ce3c542cacc0d64abeea6cb301ca8b22dc8d3cc3b7ee1b0999b62d6e8221d2c6b7f527a16ddaf9a8fb8fd2d94d90f6f4e6738015d9fd0e9fd47ff80c3aea251b570ebd0f16cb917fa39d6adca0e5359ccae44a4f4668314c263d85c336bb01d981e87ba267655232b095ba02bfc402257a5a1832f2a55f18aa5e94a75add7c7b77ce763773d3f57e326e45a7aa5de1bd6e3ee0b2f87a565494732a5c9bc15f442358a44f5093f32b7e4ab176afde3af7eff0af88cf4ee1870616252e75c639b54e7f4ccda08c7139488356b71fedae03c6c30a767311a1a7170ee04423d3476c85102287cedfaa5935a3d69737903a479f3051b254e3e90b97802497ec4ce32a3798df2436a1ac684b41c661f395251a286ea179c6011b98fc6cf34fe2408a2968478e30bb06e62ac6477cd32d5d9d560f65c5ae9d0ff66721629f8c00f06ebd229b68ea17dfbedbc3f05cf6211e26c163eabd213127808fbef5ac91d7f7cf0da00a96a40af412860080c7c558ae1e820bd55b6be4dd2e2337bdd783a081863b89185e1d9c09595ad43b7a6aba9f37546ca8bcce7eb674e0077732839c9af8337c01f48b6b75faa9f3390052b3f8246b33140f88401adbaeaaf82f50c75cd6393c83f4e742888d6952dddca0114e114758c124dfb77121fd348bc83588155ff82ba1a5dea3cc9aeaee08c5d853b7ac6b6066efe849f731ceb5594027bf8d8dc7984924d901cee0e1dc3b097f7d4616c689f9b082bb8d88a13846afdd96206a09b6f208fb85d830d429da755e404a8d48d2d5df94ecfa19c1f7ac92b9f8e2d1fe515932571f96acb264209acc35ed3ae5ab790fbc9dcb2e30a7dfdd61c944e5e6930a0344b38697887dc68eed1574750003138fc181519a56598f53bb216e264d7a9ea990d87194798e62153189e7bb5c015bb4d0dca87d453a50b5cfe93e8929366d2f743c40074bbb88f9b62ce65676685db60a21ac41761b08e1d9a9604a10ac7e38cc90c7dd610c69d9751d77fb13b0eb91df5ecb145b48b85c039fecf576d65bb3c29ca5273e0d5bacf0c7ef1eb61a94cda9a1a2002ef69e62578069533d287d2efb01ded3e44961ae9ea096f90ecc95930c25a3db3e3a8a116b23e33126c932bd6f3e427d559d64272e03f94c1e3aeceed574aa4c2c5745ebe5ac61db1bc7b4ab199ec55fee156be6ae5ba44296074237f355e4df01d13a8a212fa731c6510d0c43a5fc338a3392272550a10a328cdb1409e9133bd0d79801bc6aa99e361930bee2946d2f7f705eb1be381fbdd6a0923cfc1778607577473344a3b85b67be5e31f5c2271abdccd74e7b149dece024919f358f6adbe46b76e74d8dc8a0ece0a0d278b1de87f67f0a7e6cf54f3cfd54c0a6a5b2143fd900d90c9be7626617ecabb8439c34ad2a4853a6593d51c48e11a31b442d18dab3b4bfec198115c0e1db747f1de7b708d0e95f3db3e8c2eb3baa23ad6d0312ee315a7c0de1bd852b1cb68d02334b8e3187ffe5cb5b6cd4b01a43329899db572f61d6e5dfe22c3862403bb5c836ecdee4206206ff549e1587f788a38c3af0a36db60e70bce08b7318470a0fc58efccf1e13a362b010a29df4c5ebbc8bbfeb26b35ab8aee6b46a223b9784467b9f5f864818e1d5d466d059a0cf7a3c41f5ac308d25a66c4c7611fcec595253a8159f0d0a2d34c7aaa1d6b27162046a95185b68121b81a618750f8ba84f401f217aeb664a66f6357bfc7b1702b6fd34ffe1a32010584c3a84468de88a92c93ab5bd840ba52cc8ea4e9a68ded4acfc624031ec2443287877886db6efc64af01f7bf80782f8c5b3dda3b4cb5c3425028d7ef7f8f4177d437a61787ad6b325cd79ddcc3bfd9e1092ef118524e6c7c745b28ba8407ced9055d48c7275e1caadb88ea67bfdbe66563603de244bd3740b82153df340cc70c6ca947d6da9eb126e627666370e266aab079582e633fbad606c1535e4a15a25acb5efd4ae0cfeb03eeeb01a52d1ac3a5486cde1a151f7950fd5b68df976e843ceaa4d1e7c1644fa82984ec7d8405c6950674c3c3eeeb8a28aba272a244b26a11e07935a1ae362b1b3ddf900006fccc7b798b1ee73c8d4ae2245fad870924c4ff82ca92befb3aa6c960a19983c77f9d563d6fd529600f19897359ff641cd8db26cf065375094b0508c822809dd888cb3de0248177825e042f759505459036177c9c2e38f81806fdd183579f135019492e1e05b64a28fee0a7f48903aa9bf4d3a5bc73f0b15db50e2ead4b03e09c84d5687a17b5f5dd59e84934a5793994d73f74ae58fdb78030888cf8bad5c6f22942b241d8ee50be649668b15571968c796afcb5f749787bced05678144b2185aee171244291d7caf3d6a3c89b82f0ba02166938",
          "key_id": "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf",
          "ed25519": "142c2540a5d12602e433402ef3d5730aa82ceea9cf577707302e95d8bcb6e30249080a690f299354501a6a2319116073dda7059ae68c556f5d7f1c6d822d2808",
          "ml_dsa_65": "a0b5b4d2ec10fb75317f355f2d6aefcc8c670f6d0f8dfbf35d1db0321fa779f2e46e8a457b6d4016397084cf62e7ed0bd9acd2cb27e966e9aced8bf962837cff25c24be6889b7a018d7bfdd44b09f7f4c26ae08e804a52b878bcc5754d7c7c345da0cfa1bdfde3a52b3f22575ebf649dc2073bf5a5f6268b08dd683d09264b82fc5e3518486b8ae71410e1525a337b9c5ddb67a4f54bf012afd59d20fa59aff2099e4b4d6b88b47a3afe2005fa7469d2f1fc29dede3c81d91cd9adba15011556f20a409efddd3fcb7e5bb6ef946fe90f67b56bb37d7c0885515a5deec4db5c6880a3e8bd37bdee3be8ace918cd09bb9dd079f506943d5905ae16153359782658859ab71eca1353b81f565742e829f94f46026503fbbbc47bd9f0b50b7b0da394435364b54e41924e376dd3334457180e0770dd3847f5e0291479f86f81431c849b0e5d1aaa2caaf66dff12d1f5875d780137d1442dc5676c86f26dc1fa411b25c346a06ebf5b691048199b0ea11a136baaa77a35aec873c75755845afce4b6fc8e3ccdfae0629c36f6b5f5db44103f0ccaa227da2e3fd15d4403d26ead41327c5f599e126d63a5b1003917cfd3f08c16ede06df522b809fa8a9975ac56105b3d2e40f0135f9958ac9613db3e258a99e04ed395f9fb925da85bd06e1c8d02a7c8f77f1be53f2abb29ea97fe4c25a44cd2849106800c24482f5b968b1a63878bc5988dde98d212e30c260331a86ff96d5e812462e0dcaf08a3fec619f8827b6c975a3ab071f8be9044c2fb3a33e9d68226275f6485e6d7e1ee5e08eb85c309c02098b4aacaf3477f58c0d71f24fbed38da8285f769941d8907b2f157d09068bd2a04cd16d635f36614d0a145c098247fae22154e4189c76943dbe3a0992a7dc5a7acf6b79afd2434cab59f450003a35453902af931bf4e0ba4f311740a1eb7685c4edd2a0c2d59e56e3617237aac097a36ca8a1668c42731f31feb82e5cb87e0c8d8e57eeab1b7dfc714e5f93fc6c30d375730b1d493ab44ea1305799d3c34172d107b15dfcfda9d5aa625790555f5f8a8234fb4d8ca805fb167d7c609fc8b8529f6663b9fa8f945f8ccf272ae659d8b8c53fc1ad0043b691980e36c2a9de655dff176a0cb813883c7cf28c04a444e47d64152c39f3471236b4a43bed1df3f975f5baf9c1335ac27570878c6c1681f321bb554be85f7f9a7188c2f3dcac25517b95689aaa2ba29049acfd882e6578e0c3fd142f7523dd2515198617b7ca00d7835dab20c0b19443f35b3ad252279315ef9c9955b95908c41eb91646308e48ef0fd2761d36496817a30611ad1a019ebba07ac32be05e284e2b8968aed1be17a4bfa98887d61a0893f2d31f17649a803307d18ca083ba9aba4e9aa0c039f65fa6bedcb68cea65a92d964228e39441f303e88b69f5d96ce2740ed3a7a9d13fe710a7c04a39a0d021072bea0c38befe1aa38c03821fdc93361bd9eb5aa731b6f50f2d78bd373ecf132c33d5346b55b9c05666c5cd02e3b884ca20b6f179b39be376c07b7119b18a2ddf131f163dc5013dfd1b4f54bac98f5a999ca968ec84dbccb60f90cb7be1f7501cdba2d9493d80721b0070c7e27f2f8f1f498fe0dc0a3b7ea56414675575af891374985c86aede83e3b9c03124b36ee9376cc4af1cecc26f330de4deebba656d17374e90cc1b1e0605987712ef1fb218ba301eab19684c9be0bc6af911778b16b5b868d6808091ee3d67d85696adda4e46d179a1f1708cba674150e7bf34e4601a666f913dfc1250ac1f6c84c30472cb2740791563eaa155260be9c8f63b91bb203ba507ad911cf6225a01c0fc0951478948d84213cf4d3bf18fa4498d9724b00e3b4d3df7992d09f168bc168c9822ab1f09ac1617ad77c6df559022520d194a219124addc135657c63527a331009acd7b6334fc6d89c81871f85fc408fd11a9f40a7cbd746bce7e5f9b1035744751e172031b3cee7e47533165a6bc95f02b8469f62933110c77942febbec40ac157c99fe3aae63990286775a221c67ba02b8a79b084021c654c7ad682fbc2f5d7a85bc640ffaa700ee075962c93d82676474a1b763158ac05fdfd37fb0e5c80b2646171181d98e0e5e8633068cf6a4aa742a253ae1c1a925f14bac8b293af35a83b08e376fea5994483cecb4833566de2284cb200221ced7d455b2a6f5bad6786ef0de87eeb2425b2a9d22f827c2af54afd95b8d9a32c750cc9be186011a8c83e930926ce206f433c3c632b0307f78aef8b31a29b0ca866ec17b0c6a09998c6f4c78dbf7844c7386c2a555fb149d345392d0e1121cbe625dfb8e4829460a39ff615276d62ac9444872d2248ca6358a760898527cc27e85180843cfcc8751434a6cdd89d3fd6950f094aa130713b705e9460fe9260b0f27549dff8039d16fe89225f1129b3a1939488532e2617e6ee043ef344c697f9ade2b8adb69afd2fb88cec8395eedaf550422d86ef5d5207da86a9d8631259fbf38cff23dff048062055395515ac5a1e47b0aae4df4d533b93d053b629452bb6bb5e2503d5e3b391942a0309139d425ba9f469d34fb1c42e571d0ee0e5b9cdab86a94c572616bbf617da62e3f28de7296c4c2da776013357b4c7361d82ac11ccded832948389c82b464f5af2ed9f61863913acf00b10ba20119d29952966cf131477dcc3c11239436c7379b2df4f97bd76f5c14a9a738271b62b66fccdbd042f61c445d99fe40ff83b57c5518219c25757328764322727b126bfbc892e3a162284fc634e3175f729468fa008078c0610f2eeec2d1331e92ec7bb3461711272306515e5f9d1f448a65fadbfeac7f01b8764b6fa41f1ad9d4c1e697333ce9184c2228d5040c54e840f841acac7012f167607c8f52953a54c2b4cdef13709654b0286d925b797ef4776420911a25f2550a38c07c9f7bfffa3aafe0498b721cc39fca13b31a48ce3799e891088de6ab11895be3698ee5bf1a2e0264c804646c40fa2688e2ee15725499825311b64d3b52f40f7cb2911a3dff0a8e6c9b01bc99e4e087ddb986f83e8b8f41c3bc5b21f3933c94ae600427a46d0910be450c9fcd0b9daec020eb8cab63cea82586d2de8edf16638b1e5b3f881b24d882f171df48e09ca28d399caec9cd06614dbf352b5d06c96ab273f97b98895dd3ca95c51980f00f2188d0996e2948bd0cb3ed732dae6f851588c80e4c711b4bb941e0af53fb78e9da0bf7b04ef2167f969fb45066f7654d8c1701e24013811733c5c5070abcd5a761e98430c6f86158b60fa6ec32fcc83fa21da0841f09bf84b539ada2c5e24461fca6084a1dc15cdbb8263c15861abb1459716ab8bdfd004aa7ffe4ed6503e86ea5fcd37ba56047cea1c658e586d0e311adfe1f3167ac61d836bc1e4b6bcdd952fcad463fe547d3a5993efad8c2257e70242c2f3a1f8a059655dbe6d8f2884aa2b30b8fca1bd8a514d563068e06357695f3f55fd63a89c3ac11582fec6ad475455c81015d576c1a7f0e0fecde2a7d87d55662a2c04c85f65e2eb60474c592e5dccf32995c4cb6dcd222d4f685f5a333c07c5f00a5f8ade2d53b51c4431e5d52bde590b3fbee536ec1f75bc9b23e6dae8f92bdde11082d55e6acca12683f2fb95f2dc79c9032b1055866e27c31138ff0d32c8569600317dc4328f2878d7d6c1ef6504969b8a095b4cbdf817051fe87d3b718c4dd98a0678d35a6cac1a703cfdfbcda44e0cbddef337604aecc07069478e6f6b38482fb07e486e6ef6d49120f89cf49651beb624bbf795074e28b4dbef5a49e8ae6e512da24237d5dadd95f0e92683a23c2f58d5a91db3bb8449d1e4beb3d788a04b6bac418fb90555a380c81723e12f35dc2bcafbc1e1fe4c5170b8fa2810507d539fc032b8d2b2f26428f27288dc5995e8db7b2499f7d69e5541a9a9d565b6b63cfd03218f9182e4a991f286cf0fa7450f2b45e1f5e828e9d37b326f80119870b491939c601f2db7fd42072cdbd88d300bae3413c177d85f1f9bfa68e9e9d011b29cb297a3e5f3b3cb38815fc72333ba7b17c08b5903dc18c4db0b3299bcdbcd8652e55ca5f9171ebff8d5facbea5eb51dc13a8942c42d0d6df2b3323781c790ae3a782aab8c2e1517b28e006f819446c760d592c597b7ebe3c987a0d80706fd05f487b60f064976c68aa72eb72dd34de424bbf667423a13a7b8816604be9399f483dad46e08dd335ee088cb10cca71b5348ed729399100954e9876044349b7eea8a647ba424d31975816524e44b3421ab38895a85604a6a525ea6e42da7595c2fd0f4a52ef82d605c1c693987417c782e306561799b01403f3f7a1c41818d58bfad3621f29806adab2e747fa08a2af980be1a2ce8c51fcb635963576848e69847272fc001d2f686217a369bac4154bb18e53cf21d010a01edb641e46cef8ae3b1de2617839728d27cd44c39734f4f711ce69544d1597012bd38afd7f4720f90f744cf96db56f2a5a0479089136885746f511125ab50319757f5faf00a41f5265a24efcf17f1286e9f7a15d9f648af77f67008c8332204f2488e3ce852b30eb2e74625269814aea804d861a851b3133fdf2c9cab5cb1b48818fa8b4cdf3434a5f6e7593d00868a1f20d1a1e294c6390b7dfe5e6f6f989ff1967bdf10000000000000000000000000000000000080f13202226"
        }
      }
    },
    {
      "name": "dialect-teststand",
      "version": "0.1.0",
      "kind": "dialect",
      "hash": "sha256:bb8a755c59e694464db214153eab082aa620ffe713c86f83e317f180fad1ed3e",
      "archive": "packages/bb8a755c59e694464db214153eab082aa620ffe713c86f83e317f180fad1ed3e.fpkg",
      "size": 4626331,
      "record": {
        "record": {
          "schema": "flowrs.registry.record/1",
          "package": {
            "name": "dialect-teststand",
            "version": "0.1.0",
            "kind": "dialect"
          },
          "hash": "sha256:bb8a755c59e694464db214153eab082aa620ffe713c86f83e317f180fad1ed3e",
          "manifest": {
            "schema": "flowrs.package/1",
            "name": "dialect-teststand",
            "version": "0.1.0",
            "kind": "dialect",
            "licence": "MIT OR Apache-2.0",
            "description": "NI TestStand sequence files, by the JSON model teststand-mcp writes and by TestStand's own XML and INI encodings (binary refused): sequences, step groups and flow-control blocks as groups, Labels as comments, every other step carried foreign and counted; flowrs-sequence sequences with exactly the steps flowRS runs as TestStand does; export back to the model.",
            "provides": [
              "teststand"
            ],
            "corpus": [
              "tests/corpus/psu_final.model.json",
              "tests/corpus/flow_control.model.json",
              "tests/corpus/nidmm_measurement.model.json",
              "tests/corpus/nidcpower_pps.model.json",
              "tests/corpus/step_results.model.json",
              "tests/corpus/runtime_error.model.json",
              "tests/seq/ni__grpc-teststand-api/RunTimeError.seq",
              "tests/seq/ni__nitsm-python/FrontEndCallbacks.seq",
              "tests/seq/weaddquality__gsharp/KernelTestSequence.seq"
            ],
            "tests": [
              "a_model_is_detected_by_shape_and_a_seq_file_is_refused_with_the_way_to_the_model",
              "every_step_is_accounted_for_once",
              "the_canvas_nests_sequences_step_groups_and_blocks",
              "cleanup_steps_stay_in_cleanup",
              "steps_keep_their_order",
              "a_label_is_a_comment_a_flow_step_is_structure_and_a_custom_type_is_not_installed",
              "a_sequence_call_names_the_group_of_the_sequence_it_calls",
              "a_code_module_is_carried_named_by_its_adapter",
              "every_corpus_file_round_trips_exactly",
              "an_edit_on_the_canvas_is_written_back_and_nothing_else_moves",
              "a_node_that_did_not_come_from_the_model_is_refused_by_name",
              "a_generated_model_round_trips_exactly",
              "damaged_text_is_refused_or_read_and_never_panics",
              "exactly_the_steps_flowrs_runs_as_teststand_does_are_imported",
              "a_precondition_keeps_a_step_out",
              "units_and_limits_come_from_the_table",
              "go_to_cleanup_on_failure_makes_setup_and_main_abort_and_lets_setup_in",
              "each_thing_teststand_evaluates_around_a_step_keeps_it_out",
              "two_steps_of_one_name_cannot_take_a_limit",
              "a_process_model_callback_is_named_with_the_hook_it_is_in_flowrs",
              "the_imported_sequence_runs_and_judges_as_teststand_would",
              "the_report_says_what_imports_and_what_does_not",
              "the_corpus_coverage_is_pinned",
              "every_public_seq_file_is_read_with_every_step",
              "a_numeric_limit_test_takes_its_limit_from_the_file",
              "units_and_the_comparison_are_read_and_a_limit_expression_is_not_a_number",
              "a_failure_action_decides_whether_a_failure_goes_to_cleanup",
              "a_step_reads_its_fields_and_its_module",
              "an_ini_file_reads_names_types_long_strings_and_its_types_defaults",
              "a_field_an_ini_step_leaves_out_is_its_types",
              "a_seq_is_read_by_the_same_dialect_and_not_written",
              "every_property_of_a_step_is_kept_on_its_node",
              "damaged_seq_text_is_refused_or_read_and_never_panics",
              "the_seq_corpus_coverage_is_pinned"
            ],
            "needs": {
              "network": [],
              "filesystem": []
            },
            "ports": []
          },
          "conditions": [
            {
              "id": "compiles",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "it builds offline, confined, against flowRS's crates and lock (3 test binaries)"
            },
            {
              "id": "tests",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "46 passed, each binary run alone under seatbelt (34 named in the manifest, all passed); 0 ignored; doc tests are not run"
            },
            {
              "id": "no_runtime_install",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no program started and nothing written outside its directories, built and run confined; every crate is one flowRS's lock pins; no process or library loading in its Rust (969 other denials, reads and lookups, recorded)"
            },
            {
              "id": "no_undeclared_network",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no socket and no name lookup, built and run with the network denied; no socket API or network crate in its Rust"
            },
            {
              "id": "units",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "0 ports read from its code, each declared, each as the manifest says"
            }
          ],
          "toolchain": {
            "rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
            "cargo": "cargo 1.99.1 (5f94df478 2026-08-27)",
            "host": "aarch64-apple-darwin",
            "sandbox": "seatbelt",
            "observation": "kernel reports read back (canary seen)"
          },
          "flowrs_commit": "cfcc3328c10d1203c9d85d6d0518add2f27ff186",
          "verified_at": "2026-11-10T00:55:09Z",
          "verifier": "flowrs-registry 0.1.0"
        },
        "signature": {
          "v": 2,
          "key": "dc5d537054e6ca29b068f7a4375d0e8140af371410bd357235a146ef44d94ed33b6dfbe9c7a7ac772ec9d9ddaae7ca7b8028c9e163e39bfef3192748d9dd4e9ec4e6a705462ab98fbf030e294f78eadadd10122b0bd93a146be65c19751d4ec6eabf441d7e841630c495b2d57f41283232c45b3b4bb774c41be1bce61d551264603a500f3f387950685e4576dc280247b88fcf4dec7ee268e4d487b127d0bf79fd7a9d337e51d2c29d981f3f1b89afffbabff3f20077a90af83de9b4e0c75793d7d988857556d556e7c137c3917468f1d3a09a2066145d371ddf0ac2c37372974741d4e442e02a3c5e4c5e41f7222a54b3b3727610118f93b3d5ffc2bd2d2f7f91c8335ec0f840bfc4de7a43575f3b2db7eecb6f9585a37fb5908493d024d74e63b2dc945ea2f18ce3c542cacc0d64abeea6cb301ca8b22dc8d3cc3b7ee1b0999b62d6e8221d2c6b7f527a16ddaf9a8fb8fd2d94d90f6f4e6738015d9fd0e9fd47ff80c3aea251b570ebd0f16cb917fa39d6adca0e5359ccae44a4f4668314c263d85c336bb01d981e87ba267655232b095ba02bfc402257a5a1832f2a55f18aa5e94a75add7c7b77ce763773d3f57e326e45a7aa5de1bd6e3ee0b2f87a565494732a5c9bc15f442358a44f5093f32b7e4ab176afde3af7eff0af88cf4ee1870616252e75c639b54e7f4ccda08c7139488356b71fedae03c6c30a767311a1a7170ee04423d3476c85102287cedfaa5935a3d69737903a479f3051b254e3e90b97802497ec4ce32a3798df2436a1ac684b41c661f395251a286ea179c6011b98fc6cf34fe2408a2968478e30bb06e62ac6477cd32d5d9d560f65c5ae9d0ff66721629f8c00f06ebd229b68ea17dfbedbc3f05cf6211e26c163eabd213127808fbef5ac91d7f7cf0da00a96a40af412860080c7c558ae1e820bd55b6be4dd2e2337bdd783a081863b89185e1d9c09595ad43b7a6aba9f37546ca8bcce7eb674e0077732839c9af8337c01f48b6b75faa9f3390052b3f8246b33140f88401adbaeaaf82f50c75cd6393c83f4e742888d6952dddca0114e114758c124dfb77121fd348bc83588155ff82ba1a5dea3cc9aeaee08c5d853b7ac6b6066efe849f731ceb5594027bf8d8dc7984924d901cee0e1dc3b097f7d4616c689f9b082bb8d88a13846afdd96206a09b6f208fb85d830d429da755e404a8d48d2d5df94ecfa19c1f7ac92b9f8e2d1fe515932571f96acb264209acc35ed3ae5ab790fbc9dcb2e30a7dfdd61c944e5e6930a0344b38697887dc68eed1574750003138fc181519a56598f53bb216e264d7a9ea990d87194798e62153189e7bb5c015bb4d0dca87d453a50b5cfe93e8929366d2f743c40074bbb88f9b62ce65676685db60a21ac41761b08e1d9a9604a10ac7e38cc90c7dd610c69d9751d77fb13b0eb91df5ecb145b48b85c039fecf576d65bb3c29ca5273e0d5bacf0c7ef1eb61a94cda9a1a2002ef69e62578069533d287d2efb01ded3e44961ae9ea096f90ecc95930c25a3db3e3a8a116b23e33126c932bd6f3e427d559d64272e03f94c1e3aeceed574aa4c2c5745ebe5ac61db1bc7b4ab199ec55fee156be6ae5ba44296074237f355e4df01d13a8a212fa731c6510d0c43a5fc338a3392272550a10a328cdb1409e9133bd0d79801bc6aa99e361930bee2946d2f7f705eb1be381fbdd6a0923cfc1778607577473344a3b85b67be5e31f5c2271abdccd74e7b149dece024919f358f6adbe46b76e74d8dc8a0ece0a0d278b1de87f67f0a7e6cf54f3cfd54c0a6a5b2143fd900d90c9be7626617ecabb8439c34ad2a4853a6593d51c48e11a31b442d18dab3b4bfec198115c0e1db747f1de7b708d0e95f3db3e8c2eb3baa23ad6d0312ee315a7c0de1bd852b1cb68d02334b8e3187ffe5cb5b6cd4b01a43329899db572f61d6e5dfe22c3862403bb5c836ecdee4206206ff549e1587f788a38c3af0a36db60e70bce08b7318470a0fc58efccf1e13a362b010a29df4c5ebbc8bbfeb26b35ab8aee6b46a223b9784467b9f5f864818e1d5d466d059a0cf7a3c41f5ac308d25a66c4c7611fcec595253a8159f0d0a2d34c7aaa1d6b27162046a95185b68121b81a618750f8ba84f401f217aeb664a66f6357bfc7b1702b6fd34ffe1a32010584c3a84468de88a92c93ab5bd840ba52cc8ea4e9a68ded4acfc624031ec2443287877886db6efc64af01f7bf80782f8c5b3dda3b4cb5c3425028d7ef7f8f4177d437a61787ad6b325cd79ddcc3bfd9e1092ef118524e6c7c745b28ba8407ced9055d48c7275e1caadb88ea67bfdbe66563603de244bd3740b82153df340cc70c6ca947d6da9eb126e627666370e266aab079582e633fbad606c1535e4a15a25acb5efd4ae0cfeb03eeeb01a52d1ac3a5486cde1a151f7950fd5b68df976e843ceaa4d1e7c1644fa82984ec7d8405c6950674c3c3eeeb8a28aba272a244b26a11e07935a1ae362b1b3ddf900006fccc7b798b1ee73c8d4ae2245fad870924c4ff82ca92befb3aa6c960a19983c77f9d563d6fd529600f19897359ff641cd8db26cf065375094b0508c822809dd888cb3de0248177825e042f759505459036177c9c2e38f81806fdd183579f135019492e1e05b64a28fee0a7f48903aa9bf4d3a5bc73f0b15db50e2ead4b03e09c84d5687a17b5f5dd59e84934a5793994d73f74ae58fdb78030888cf8bad5c6f22942b241d8ee50be649668b15571968c796afcb5f749787bced05678144b2185aee171244291d7caf3d6a3c89b82f0ba02166938",
          "key_id": "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf",
          "ed25519": "b27df869a1d4023577489c89afeee73da07c05ab76bf9b3f27738ebe212753e463ee6b6bad10ebe0d14efd87a542e797c4a4633689ce03d04c3ba84a5090e704",
          "ml_dsa_65": "04b9730713783c1c55974d005b6bcfb37dae85c9beb35c7364bb055f0391652b22e65793874ff3e561fc5ea9ef44a90b292d977b8cf2a31359929424afa987e3ecfbdfdd98053b9c5d550358420d10a7a6448e3261a57c80b196150c5269b8c2f074d7296b0d79f4a9a390d65d959f3b903867a39ec135eb0155e4740e41041fbe4b6ded07b5ac4680750828f6895d4ac941d1f6aba10d6fc73688ea92e32b7e23ea349192fcf1f01aceb04737e56a11d340c190cb1a251346f4ca61cce978daa6e887028994df9bc0d354d186b802986455918be6b1b08a1a17a3460cca43c5843af7501b579c8ed86c0a0316c97f068896ba3d38348322ffe5aff98d0937ee6def0ff5e55161d785c7a3d629015992411eb3f554dff4e20f93461cfff8d0979c74ff2d017c3e1f487068bee22fe8a09df01b7eb9270379a77f6e3023bec025d2e00b92fa74a7d35690582f8146c5d5aa6e462c1853ec2a0af49824c5e4eafe423cb37d0f6ce957311cf1747716fa30c043c18a607958d1c4fb5261f0fd29ecc657a40929542fe074d901c3471ee403f40019f13e456de5b1523612fe13490c43e15654af31042d0f72d69dee2fd2fc85f738e611829542bbfa0c5f72f4e478597dc2961311142cb5ff145e67ed5476de48e017575209ce6ae2bdf3a0c1a2ebe89c70eaa8421eed6ce6e028d5e5dbac47bfb8ba29bd824fdd5d0263bcf784029fda0487cda4f64c4898a3bbfb59bac52b52a963f48e30650684507e85dd351baa0b0bd0a12e4ea95407d9e7a534514ec66b616ac3ebd35f450cedb7c0a4502a17d092273c53fcd30f7532afbd9c9f0a9fcf30b4188fac16ea30fe0090ef0d7f065089bd8f1bd40f8101a5fffd69977f605e5069088767de19a4d4b67f607d15e1944897bb9934a85527a799e100e5ce14807625e5247d36872036b61eece2a3f1fd71796c00e5fce6834ca585b73333c1bb9c6e6a4d4a0a50a55fad2f6404890e509b587b5d949920b27d05960f6ae21ae2c983ecb004edf82bae325017f26199ad230f7b02bdfd105b4c0c5026fdfdfbe630245268fe04851adbaae85c9f25692cd37edfe22b7ee77d8e0a1e13d2c466f214af3aa0fe64fe290ff4c246b4c8435ff27a9c1d7a3f12118112a71db6d12143f73bfb5cfd8cc543ccf7b852677c48d30d071d3131473a209684e19723ab0134c97f4116751c9fae7e3a2d16008f8db7fd5b06014c09266ec18add318384943e27b01d09864bd9e924cd253cdbc219fb6bfc65c154896fbe4cbbe041e6d61b8836e394810a50c5312b8bfa0e16f51ce06a8fbbb730d85b3c3f6737a782f5241118f8c4dcfd3161537183721767dabdb4153d8f3fc97f4f338df8ea267cc70d97086131e0d5651985553f55a802631c9df19b05267030cba86ba56ce12a391d2a204fe21776405c690e6468d411eb3d577fd4042b8dc532e5205c5cecc4259cbe5147e11b6297117aaf4e9a3daeaa4c7542f5c97a27795e03317d3125c94e9902b8766d1f51a78ef712bbfdb01b1fe7edd2780f445d6b4596beca9831a427dcb5c50ab3a018096aa167527c6dd7f87f22312a15b6b5d7b28e806aa9a795e4fdcd642d6eb6afa0d6b73423da11e202d72bfb35b00d41bf5cfa1b4e4e1704d2e78a8d78c99784dc155276c227b4664fddc934e3bad2766f448673effa8ce0d63f54320468f3228babf45815d8def8e5c3d3964b80d18d582f916ba26a13d356efe4259d0fbc4ffc77dff358ad6fbb9ef234046534113d0e59726564984efb1558e66539b06745d2f7cb4d36e0fc4ac66690bff001c5d839491260d70efbf7a7f367dacc78ede4ff7daabc9e95b01a5463732852854025477dafaf7cccda89d85f312f83bc8a97d0d69a1c978834365147a91c431a5641a2d8b0aabd67dbabbe647fc9e68ce741d186377ffe220f71dacc1a88ffa3baebff06ddfc63ca7d46163a49b31fdeaf6a693a8d772b49d9e2242906ffa1b9bdf0041a90f631750123a7a453d3f93ef6033ea3c824a2769d4a457a55ddd538a7111aafd9ca2c791c017dad646b102cfffb849c7f439a42f07f465cac04e0a3b4ee1549926d21200a9776708f07cb12e3076aa3e727c06c75e9474514d74470ecab1ad8061ee13bf604388c5e02cc981416ab6e3db2b3c4a012b68154b0d5369f282a0896df1c214235f3868a809edc9587becfedbb3718dd0a3fe564883ca1fb3d3870a253e67a3d10234a9d6aeeaf7eb29d869ef244374f0249053c280800ee206f1ab738661787c134cbfe37c342b22e0b2d5ab70af7a8cb4b5d3dfcc4b830bc328e736899de28201592a2766ad05688d4fa42533c9b0d24a0bc67908422bd331fea046f486343809bb46c21a5dfa2fcd10ff233e62abb650dfebb465f7e0cb53b3acace4c300701b18903b22c234a020ccd59739110ef024ab3811968d5a031d7a8564061ad9a43ba7b2f1598d2e6081884cd27e9eba523b47063ab4948f27185708ea12144477347c49b78776d168216090178408cd01f112678270adec4761e9f90e6e5a5c51fbf8ff017e3b5edf07ce6ce23e84ba3d5d794a2d6c8c3f75154fd76cc3326f411b76f2e207c0e60265e956f8fbd019e968ef19f0232efa1d1d4e1f849fdd6f9dbe33c914a0a6471d65476b505475e8256a5af4cfb800e4c67513d8e3cc623302ad846a88d85a2875933ec2602fe53446385ce2baea9559ade0296c2df50be5824062d0fc8ab313da57499de44b90edf69cb71dee69065cc5842837f4814cea77e1f834349afbdbd83946c01daa6770deb60a0b29738df9697313d8e023ad6541fa8ce6171f820a9a8384fb50a33077f2aee061bcbe271db227150b1cb63f83b2d282bdd387905a588b62442856d606bf8636142358f7ea8174ca34ec5ef504c892a12cb113271ba367a5035a8daa63d8602f82bcefc853586a190941d64e2cc9bff92485d736c1d0588cbf4ea6f50188b215f0d5b92c23085f6a24e51fcf9d45e75845780f8d8c41380c1058fa12345598f5154228bbb7cb96e90695446b3d246f3817e21878b4735ff5cb02f3ba3a19be04e1665b037e79f6e342920545bb499b63993d444c98b148b776c23d8058a29951effcf48f315121fb09592ad3e9dec8d66a8cc9fd92b8b318784ba3fb32de819840ebda158918bf135611ea16782d84732e0b75577c9ae6075f54cb96c301057742c73a04049a151677d17b043d39681dc7963007a86b30307f9d8e04c2d6f604867e63bb0c5c4cd1e1b835abac72311edb29cc65ff70285b932f90a68b0e47f40b02a48610854d8b1a863f7f5cb4693e442f455f9903bf3d855ee15f92ffb296d7ee763e359c7055c6a3b334623afb5014f157e1a04da962b3b6df790a9e30a7004571939ddcb4e274e79aea44ff11418fc3960b3ea9cf5085652ef3409ed45c20df003cc2637adbd7a193e7af4e5d3746d39267bb675dfadb444edef0dd714326defdb8770c44cb0650a56ed91637cfcc270e7dbee86b3107de2cd8b2a67dcb7795da05c41fd68e32349a8d3d05410e6a04d040368bbc1d2760984a2254ace6e35ff4aaf2cac73ae28f287dca1e343e3c37a65ffc89777e560c8e1fa8dd5e90d64f926b99a4699f934254afd5b74e58e368693f1cadbb61d025b1cf75abc01de03e594839999f7cb2a13f20b7100cc46c3a875279858bd23c632ac8f7b30c8b838bfcf000c4ba2d516dd43d1c083bba3144794803dc94dc03aef4145609bba4c90f7ded9b4349baf00d51bbf6f6c2ba530cbfd537b502d270ba91aba3bf71d571207515654c8543f25c25e69d4314aed74667bfd7101ced962646d1ebc9e6b92a4efdc92a653605fda2a3f8316fbec6aac8271ad9e29c1e609ecce388c897f52dfc6555a6c22d6532cf8746ed8bffd07d83193b287591fad1340ff920eb02e205abdd27cc4ac23c61241a853a31b0a49b70bd01f81653dbc3856124987e232b724e8666f911a1426367e37565fa4cac16aa902fb27142c5e058352b98b40b135bac2ad4a5f4a0400644795b28e5065853a4226143c0cfbb41d3e8fbd4725d43c6d9221b622faf3f3b5ccedafcd8b501dc6f7f412027c7bcba98ccfec63aba8408fbfbf13211a24e1977f73a631909c7d512d5e2756ef079c7116280b810d0827d36edc6a735089cb77351dbc56ec7959968fa1a3873ec7e3d5cb9c1c181262ee8cbc54254274ff6ccfb5c329f8e442e68777040d4ee38a5dd253f57d14ba207608a0022aa500c2e86a20a9b20d3f8f9af34ef86b9bbf6bbaf1596ac1a1b20b968733d727a9befcec66a60e9e2516796803777d7162d96a2204590c44b33afa1dc502f8cbd4f17b8a4f758c689bc9ce5dc44a24952520fff4e249747f2278c69e6362c3fa11c1abbdc7d5af37625ce566e58eb193d364270f1d988d28e9c6078bb6bb9eea7a3569d8c1d576a529cb82ae35cd9017569c2db7a1165154fddb611a168abc91e75aa1437fcdb1037bcc1ff2212a496e2c8a2fd5ce8e990907a2cb7946a9b50362bb0c594f13d226c6f4a0352383189ff328f3b077a0876a82bee18c957d4019af5ff9e741fb123174a5b201181a23343843475183a2607ffd0f556778183860567edf214c6ba0a3aac2c8e1000000000000000000000000000000000000000000000b0e12151821"
        }
      }
    },
    {
      "name": "driver-bme280",
      "version": "0.1.0",
      "kind": "driver",
      "hash": "sha256:c1b78ca02323a420486534c0ef7d612900c49fed0fc31696fb1e4534d2d2e896",
      "archive": "packages/c1b78ca02323a420486534c0ef7d612900c49fed0fc31696fb1e4534d2d2e896.fpkg",
      "size": 11421,
      "record": {
        "record": {
          "schema": "flowrs.registry.record/1",
          "package": {
            "name": "driver-bme280",
            "version": "0.1.0",
            "kind": "driver"
          },
          "hash": "sha256:c1b78ca02323a420486534c0ef7d612900c49fed0fc31696fb1e4534d2d2e896",
          "manifest": {
            "schema": "flowrs.package/1",
            "name": "driver-bme280",
            "version": "0.1.0",
            "kind": "driver",
            "licence": "Apache-2.0",
            "description": "Bosch BME280 humidity, pressure and temperature sensor over I2C: the BMP280 map flowRS ships, with the BME280's chip id, humidity control and reading, and config register.",
            "provides": [
              "BME280"
            ],
            "data": "bme280.json",
            "tests": [
              "the_map_is_valid_and_names_the_part",
              "every_bmp280_register_is_where_the_bmp280_has_it",
              "the_humidity_registers_are_the_bme280s",
              "a_virtual_bme280_reads_back_through_the_interpreter",
              "the_generated_driver_is_rust_with_a_humidity_reader"
            ],
            "needs": {
              "network": [],
              "filesystem": []
            },
            "ports": [
              {
                "of": "BME280",
                "port": "id",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "reset",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "ctrl_hum.osrs_h",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "status.measuring",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "status.im_update",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "ctrl_meas.osrs_t",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "ctrl_meas.osrs_p",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "ctrl_meas.mode",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "config.t_sb",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "config.filter",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "config.spi3w_en",
                "output": false,
                "unit": "none"
              },
              {
                "of": "BME280",
                "port": "temp",
                "output": true,
                "unit": "flowrs:LSB"
              },
              {
                "of": "BME280",
                "port": "press",
                "output": true,
                "unit": "flowrs:LSB"
              },
              {
                "of": "BME280",
                "port": "hum",
                "output": true,
                "unit": "flowrs:LSB"
              }
            ]
          },
          "conditions": [
            {
              "id": "compiles",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "it builds offline, confined, against flowRS's crates and lock (2 test binaries)"
            },
            {
              "id": "tests",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "5 passed, each binary confined (5 named in the manifest, all passed); 0 ignored; doc tests are not run"
            },
            {
              "id": "no_runtime_install",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no program started and nothing written outside its directories, built and run confined; every crate is one flowRS's lock pins; no process or library loading in its Rust (215 other denials, reads and lookups, recorded)"
            },
            {
              "id": "no_undeclared_network",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no socket and no name lookup, built and run with the network denied; no socket API or network crate in its Rust"
            },
            {
              "id": "units",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "14 ports read from its code, each declared, each as the manifest says"
            }
          ],
          "toolchain": {
            "rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
            "cargo": "cargo 1.99.1 (5f94df478 2026-08-27)",
            "host": "aarch64-apple-darwin",
            "sandbox": "seatbelt",
            "observation": "kernel reports read back (canary seen)"
          },
          "flowrs_commit": "448d1c56275905b7322e0eb9853a61ca0214ac67",
          "verified_at": "2026-10-31T13:55:16Z",
          "verifier": "flowrs-registry 0.1.0"
        },
        "signature": {
          "v": 2,
          "key": "dc5d537054e6ca29b068f7a4375d0e8140af371410bd357235a146ef44d94ed33b6dfbe9c7a7ac772ec9d9ddaae7ca7b8028c9e163e39bfef3192748d9dd4e9ec4e6a705462ab98fbf030e294f78eadadd10122b0bd93a146be65c19751d4ec6eabf441d7e841630c495b2d57f41283232c45b3b4bb774c41be1bce61d551264603a500f3f387950685e4576dc280247b88fcf4dec7ee268e4d487b127d0bf79fd7a9d337e51d2c29d981f3f1b89afffbabff3f20077a90af83de9b4e0c75793d7d988857556d556e7c137c3917468f1d3a09a2066145d371ddf0ac2c37372974741d4e442e02a3c5e4c5e41f7222a54b3b3727610118f93b3d5ffc2bd2d2f7f91c8335ec0f840bfc4de7a43575f3b2db7eecb6f9585a37fb5908493d024d74e63b2dc945ea2f18ce3c542cacc0d64abeea6cb301ca8b22dc8d3cc3b7ee1b0999b62d6e8221d2c6b7f527a16ddaf9a8fb8fd2d94d90f6f4e6738015d9fd0e9fd47ff80c3aea251b570ebd0f16cb917fa39d6adca0e5359ccae44a4f4668314c263d85c336bb01d981e87ba267655232b095ba02bfc402257a5a1832f2a55f18aa5e94a75add7c7b77ce763773d3f57e326e45a7aa5de1bd6e3ee0b2f87a565494732a5c9bc15f442358a44f5093f32b7e4ab176afde3af7eff0af88cf4ee1870616252e75c639b54e7f4ccda08c7139488356b71fedae03c6c30a767311a1a7170ee04423d3476c85102287cedfaa5935a3d69737903a479f3051b254e3e90b97802497ec4ce32a3798df2436a1ac684b41c661f395251a286ea179c6011b98fc6cf34fe2408a2968478e30bb06e62ac6477cd32d5d9d560f65c5ae9d0ff66721629f8c00f06ebd229b68ea17dfbedbc3f05cf6211e26c163eabd213127808fbef5ac91d7f7cf0da00a96a40af412860080c7c558ae1e820bd55b6be4dd2e2337bdd783a081863b89185e1d9c09595ad43b7a6aba9f37546ca8bcce7eb674e0077732839c9af8337c01f48b6b75faa9f3390052b3f8246b33140f88401adbaeaaf82f50c75cd6393c83f4e742888d6952dddca0114e114758c124dfb77121fd348bc83588155ff82ba1a5dea3cc9aeaee08c5d853b7ac6b6066efe849f731ceb5594027bf8d8dc7984924d901cee0e1dc3b097f7d4616c689f9b082bb8d88a13846afdd96206a09b6f208fb85d830d429da755e404a8d48d2d5df94ecfa19c1f7ac92b9f8e2d1fe515932571f96acb264209acc35ed3ae5ab790fbc9dcb2e30a7dfdd61c944e5e6930a0344b38697887dc68eed1574750003138fc181519a56598f53bb216e264d7a9ea990d87194798e62153189e7bb5c015bb4d0dca87d453a50b5cfe93e8929366d2f743c40074bbb88f9b62ce65676685db60a21ac41761b08e1d9a9604a10ac7e38cc90c7dd610c69d9751d77fb13b0eb91df5ecb145b48b85c039fecf576d65bb3c29ca5273e0d5bacf0c7ef1eb61a94cda9a1a2002ef69e62578069533d287d2efb01ded3e44961ae9ea096f90ecc95930c25a3db3e3a8a116b23e33126c932bd6f3e427d559d64272e03f94c1e3aeceed574aa4c2c5745ebe5ac61db1bc7b4ab199ec55fee156be6ae5ba44296074237f355e4df01d13a8a212fa731c6510d0c43a5fc338a3392272550a10a328cdb1409e9133bd0d79801bc6aa99e361930bee2946d2f7f705eb1be381fbdd6a0923cfc1778607577473344a3b85b67be5e31f5c2271abdccd74e7b149dece024919f358f6adbe46b76e74d8dc8a0ece0a0d278b1de87f67f0a7e6cf54f3cfd54c0a6a5b2143fd900d90c9be7626617ecabb8439c34ad2a4853a6593d51c48e11a31b442d18dab3b4bfec198115c0e1db747f1de7b708d0e95f3db3e8c2eb3baa23ad6d0312ee315a7c0de1bd852b1cb68d02334b8e3187ffe5cb5b6cd4b01a43329899db572f61d6e5dfe22c3862403bb5c836ecdee4206206ff549e1587f788a38c3af0a36db60e70bce08b7318470a0fc58efccf1e13a362b010a29df4c5ebbc8bbfeb26b35ab8aee6b46a223b9784467b9f5f864818e1d5d466d059a0cf7a3c41f5ac308d25a66c4c7611fcec595253a8159f0d0a2d34c7aaa1d6b27162046a95185b68121b81a618750f8ba84f401f217aeb664a66f6357bfc7b1702b6fd34ffe1a32010584c3a84468de88a92c93ab5bd840ba52cc8ea4e9a68ded4acfc624031ec2443287877886db6efc64af01f7bf80782f8c5b3dda3b4cb5c3425028d7ef7f8f4177d437a61787ad6b325cd79ddcc3bfd9e1092ef118524e6c7c745b28ba8407ced9055d48c7275e1caadb88ea67bfdbe66563603de244bd3740b82153df340cc70c6ca947d6da9eb126e627666370e266aab079582e633fbad606c1535e4a15a25acb5efd4ae0cfeb03eeeb01a52d1ac3a5486cde1a151f7950fd5b68df976e843ceaa4d1e7c1644fa82984ec7d8405c6950674c3c3eeeb8a28aba272a244b26a11e07935a1ae362b1b3ddf900006fccc7b798b1ee73c8d4ae2245fad870924c4ff82ca92befb3aa6c960a19983c77f9d563d6fd529600f19897359ff641cd8db26cf065375094b0508c822809dd888cb3de0248177825e042f759505459036177c9c2e38f81806fdd183579f135019492e1e05b64a28fee0a7f48903aa9bf4d3a5bc73f0b15db50e2ead4b03e09c84d5687a17b5f5dd59e84934a5793994d73f74ae58fdb78030888cf8bad5c6f22942b241d8ee50be649668b15571968c796afcb5f749787bced05678144b2185aee171244291d7caf3d6a3c89b82f0ba02166938",
          "key_id": "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf",
          "ed25519": "192ec1d1d5b83594558bfc8a7a8e0a6a9cc28cc6488da902cea5edbbae5388c1974a2acc042f42bcae9c7c9a23c149515b17fec49c35bd9d7471a955b8381706",
          "ml_dsa_65": "74fc2168125c70ae94661ee8ef232f911b1bd8bf900ffeb1048bad1988cc6b8c35a1fbf67229f464eae9f6680aadc40fb79eab59f2874f66f8f2273be250af5f45269110b452c4b3f7043073e49c2b8644cb0261107524055f7ac607299a3ad9e0f4d5800cb7a20846e87b7e2ef12a5806d9379847b3a9533de6796cb9b3dc9ab52cfb6640c3565b74665ed4060f3320dc1abf747fb9a2a5c51d085a96fd7b03b2f3665659a911912d7910d268461d806ceecc004fbe89379b2ff730e3f7b858da5e3aec5a874521600b4c3090bd567cd188aff1513b2e302cd728acd305ae705ae2b020273bc62f1f637c2ed56db2c75a49e63e6fe4c5ebb43a61fd0b52ff180c96de91ceddd455e4143fe4428db85867977dabaf55940b90df330851234e68defeb155fb477d1e55976d22c7931b45d0b98e418440b69c8e1b003697d832c08d7d469a80ed40baf601849ca17330ed74be6a77eb9e03a9711538620b096a743cf10295dafafbcf91d81b8be5f8aea18d9dea267fd14e25ed69c469b896ec5c5c115c657c8b8ec670dbc06576ef2f2acbe50135bd73e7a694d8a01fd6aee57e95ff83352ede9af4c4479226b1608dad4cd3fa1d24f75f185f779481c430473f0aa975dd51ccf9005aa4865194977069bc822ed4d108093105b9a5ea515508acc829c08f4c956c2912b30864ae026c9e5b41f21d5b278268ce0d82048975bb6a2b388d291eff1f30c6bfa065bf3f635f662a0ef8a1a62011cf27a6d48f714916fa3467a2f46ab265611a0b6fd96c5326e8c7b1a7a01179d72163a9c1f55ce6c76be24e6f9d2859cc668163a9703d059760f6ecd76136b95dfba8080d6330583a20009872dcec7d91633d14f2882d518fa17fe2baf53e53662b1798869a76d676e8f496fc511b98299c2e827331a6f388bf3c0cd118b24f8b30c11939a8bc5cb5066af91b729930829b9325dd8e71f32eef3b06ee3286beb07cd66751b02a6ec0c4ccc1df066a26e02721a5ab82b328b11992f21d5657b62517dd99890a6bec4aa38351a1a354fc4749203eb34ff3ef1e44470bdc677980f1d139486ab1986c5848933630cba8a85179aec7efe033dbbef1adcdd81ac0474490b75adc15bcd6698e26b2d37485fbd43f86b489145727ba76cef4d4914b55e38732f12728f68a7604190e1834966241ff2d9eef33dd68fd838e77c630cdfac850f9bedc880fa341f0068622e2c2a3f117cc284c21b091fbd2c70bdbf3510413c804413e68c9d283de4d5195407626e4a920fe937d3e12f705931c4a7676af1fcb05251d5740397c0904742b4afe2af55b330e1fc19407a8c9f924dd337827b5f4ddca77b0bca0803644170703efe8933e87daf88981adb2b3b769dcf362a5a58190566c700de484b22dcc849855a14f1d7a35e873b22dfa013cdc34d58aece854cca160b958326a13289dc872dacf9e014a64bd313c47bffddc886a6eb3824d8b2f411cd5240de0b58a9b1789adf953a1111283f2887ed6cca9363d493f9566c43ce8456a6525e791de6527229fbda10f2629f39d67122a098cee1d7eea31053e39743fe0f66341b254e18e285c9d8a4dd29272e1a7302ff08c795b1da8d1803d43eb2bb6079efd65a7c7f94f91d04cfed0a6dc2b277810d8e0a4758b62c22f4f6605e637829105c935d2920248f8d2b0821a3155ce4b46e245746007081a648c28f971e291b9fde4cad0e7690dcf83e53cf825cd9aac153c5b75d90958dd680a0ef081dce03d43058a4644af652389fbb3acd46d093389863f7aba43892fb8d56471c4a8031b0546e2b285b6bf007f25622d9a811b3f8107132f948c4ba8366bb4147947a0d324c2747ff4e2c8307dee88877c2853e67cd9f8f8dd77a84b35e46ad89eec8ed2d2cac75f4d7fc9e42cf06ac6fbee74d6df921486224b4cb2665b3edae7c65a87a7297b2c77f2259bcb6fef87df02bd712fe361e6081079ed2cb3cbf4363ffbf6bdcf27723cce9ac3bcaca7f7a353a4eb09eda5de89e88322d75552d46c4a81078a6d3bd053e405880b3bcf0da53cf3ba71548d6909bd78f072cf6f2dac3e51ba2ec3ef62b83fb89f5992143a466445949a13bd8d0608544c3fb6a03103e1352576ae8d506c9d1c7cfebeb34e5a79c6c5f1ff8e027672fc68da9c215d145b05b9d2a2f075b122888c2d82c45ee94fd378dc72fd2d3d49503d481c7f0d9b3a9f2c626bbb2125cd52e0a777dd2a99b8c513bbe1e768325ac423ba2ffe3e6caf87b3c877a0c9373950c0fdb826607778c25b1f4c0abc38b8e28c82336a2590e7a2db1395c902bd06f32942c1bf394758b611ffb03ad5e06e13abff0aaf44a48ce2416ca7560b09fdb88e9d06154fad20c1c7d6c52f51ad90dc5303f330be836faab7b729575bebe25274d2f43d7cf3b9d1e6d9f8a4db848d76af8b60c1509ca62bf9b249a90fdd97da9b3d98c3085be003471e04af7f06e40acb9866d9bd2316e630c6057de99f7e745d3a89f55625e01dd1ff253da7b4b7b26d1baa3af25a71b0204e0421ea2c86be8bec024d98939c5ae214e66904785df6ab6d6e0f38fd048849a2a8f90072b37667ce15e06dc77521fc4cf914eaab4e0b3bfe789099e5419a0c5b2993b38a7607422fa0336623cdfcc05b45ebcb420d7b8da5aef9d5950b790a468717b36cbb6d86fdee621d5acd19aa81f7ac763368bac0a1d0fee41a2b73a3ba6f230bf0fd228e11368c580dc6db802dd2b8832c9998ddd4e39122a8ac57436c6bc4c644a8bec848e9ed614203a7088231ed31169d895045d3245ade0ae96f25dac1667e6c1fecc5036b36e1675c451a9ba8d52c4727b4da02744a8027613646935b1ebbba94b4b231587de949b0c9d48fb561b56d52c7456e228aa6c19370989436f71b327f78a22b122f06cac6d5df51306ba8d48c3afb1ce9d695a7b358739659693c9894c2e567cc046fa272af4e74984cecfa5fb782a4fb0b0b12bde975df8dc021b957ec38263a6ad5a64e59c87f1b8341cf3c03851e9d18a5625e1688d3af47721be4dfa176f6d08ff898eac476c3fd44bbfecaa0d167dfa4ce6fc2df910b9c62333b824bd396c4e52aa38d8e52856abfa6fc0e7a661f97cf6acd3170006e78493a78677685953207876ed66a1e2ecb4d8eef398baaf399a32e7b453f30eec1f8f609a58e661388847b5ca372aca3627fc7b4b440f33ab4d99537c59178f150383ee71f901698615e2a35f4b2bf44a0cd6dc8f2832b8a5916671042004c6c1d84912f2cf6104f99eddb4d8ed4965fcb1db7cf08ac2fcaf613a649ae022fe054ae44bdbb6f6b26e62bb323d264916f4f6065392065b220f1fa2f536b15644bcdeb508b8aaa1b7f6aa5a2765df2d4c5b9829b4184620ab3ff29429eca0717586ad3740d766c83cc1226876a0d101ea7a74fe4774cb57f944283b0f8abb3c6b1d62c10179a62368da5b3a3f1459c29838481ac13bb384e9a0d64eabf7f3d80fdf03ae722b0e4731d441a9d7fd90c8022e9bcf7172e592e1624434ddd9a66250df429c06ca56b3295d9257d6c5f87ef7a0ab0d28d957267f0c40ccc65793aea7b0d84f9376145b4a8355726912a4fa3dde4efc08b96e5a7f2d7956f6ea4ecba97a11a468b421a331f9b91d4700a5360f083e483336f67c746033d88a0fdee1ede186f74de10a49fa14b9cc3d7cb4a232ef948819a614aa760add35fa5c70d8254dfff24259343138a080a7b60c314df56fc1077003a8f3b3aee8e4710f85698994ca633c8944799a105a2914435ac2697ede53759e4866419df00666568d329bd14d86e0728dc4e906ae362cd409de0c4a434ca168d15709ca74380d5151905bd76a98e39742561cfa8f658fccae627019cf7b3f38aee308fafb52bb6ac5729e77fe9a8fe8bf88efd6bdb692111b4a7fb77558c0695e28254bd6beda5e00d8fa78d726460240b6ef361f440f1d207bc6a7c1e2b392bdb22a778ac1c5654508ea2c365495d9ce91ed45795512a7e287a5003380bd3e2985d478f138e586fe37d3763d918e40d608c8b85d58016b417f132d3697c58cf0350c3b2586667e21803cfa32f813c1642bf4634734aa83fce254e2d9b356033aef2e5b5c771e27ef40f81092175c836c28e1489a39dab235819301ac98ba17bbef31eb2224e5900e806b93732c23b5113752c3de680fbfa44467f028e6883748529ea439d82fc2f19cb1f26903685f516eed7f2e68f579c5bfba7305bc3f443c2982d88c14bcb50f02a348d5891336b24f9800828668d13f9494a3bb3da8e9e8c81d58249494ae9f6a5acbc7363095282cafb38b59c1bd22cd9a6ba32ed621023b8208fe58513f3f4a78b160a9948e615ae33251eb37e21a38a0fd77bb55a63d2e85ed747c4e97076bf5ae7eef855f374f3040fb0f1183f4212393a5008d04f646130851db360bbcd3e6d1ccc0be1228ff5fb636670ebc6b296192ce49173dd62d417270d1b1d22c8f10700f4de82bd17a84bdabd700b96179b98e105907212b293cce3c30e0c10419a942bda9a9ad07ceccdf70085e793bfe9d9002be7c0f23fba84b3c5bc43d04dd2a1d1e7cd45712eb27fcf25063a5b5615244f528997adb816717b84d3d8fa27314c5dd8e5040c779fc7043693b2c1e1e3f2f40920282967797d8facc8dcf10000000000000000080f151a232f"
        }
      }
    },
    {
      "name": "neuroviz",
      "version": "0.1.0",
      "kind": "widget",
      "hash": "sha256:62380e9e9d1fc37a328bd0d269e0375f4c94f540ef77a09d92b27c155b8f4fb8",
      "archive": "packages/62380e9e9d1fc37a328bd0d269e0375f4c94f540ef77a09d92b27c155b8f4fb8.fpkg",
      "size": 1289890,
      "record": {
        "record": {
          "schema": "flowrs.registry.record/1",
          "package": {
            "name": "neuroviz",
            "version": "0.1.0",
            "kind": "widget"
          },
          "hash": "sha256:62380e9e9d1fc37a328bd0d269e0375f4c94f540ef77a09d92b27c155b8f4fb8",
          "manifest": {
            "schema": "flowrs.package/1",
            "name": "neuroviz",
            "version": "0.1.0",
            "kind": "widget",
            "licence": "Apache-2.0",
            "description": "The neuro views: topomaps, butterfly plots with global field power, ERP images, Morlet time-frequency maps and compressed spectral arrays, one kernel at both tiers, checked against MNE's arrays.",
            "provides": [
              "neuro.cdsa",
              "neuro.erpimage",
              "neuro.gfp",
              "neuro.tfr",
              "neuro.topomap"
            ],
            "tests": [
              "the_family_is_installed_and_is_not_a_builtin",
              "every_view_draws_its_numbers",
              "the_example_graph_runs_every_view"
            ],
            "needs": {
              "network": [],
              "filesystem": []
            },
            "ports": [
              {
                "of": "neuro.topomap",
                "port": "signal",
                "output": false,
                "unit": "$T"
              },
              {
                "of": "neuro.topomap",
                "port": "grid",
                "output": true,
                "unit": "$T"
              },
              {
                "of": "neuro.topomap",
                "port": "limit",
                "output": true,
                "unit": "$T"
              },
              {
                "of": "neuro.gfp",
                "port": "signal",
                "output": false,
                "unit": "$T"
              },
              {
                "of": "neuro.gfp",
                "port": "gfp",
                "output": true,
                "unit": "$T"
              },
              {
                "of": "neuro.gfp",
                "port": "peak_time",
                "output": true,
                "unit": "s"
              },
              {
                "of": "neuro.gfp",
                "port": "peak",
                "output": true,
                "unit": "$T"
              },
              {
                "of": "neuro.erpimage",
                "port": "epochs",
                "output": false,
                "unit": "$T"
              },
              {
                "of": "neuro.erpimage",
                "port": "image",
                "output": true,
                "unit": "$T"
              },
              {
                "of": "neuro.erpimage",
                "port": "rows",
                "output": true,
                "unit": "{count}"
              },
              {
                "of": "neuro.erpimage",
                "port": "order",
                "output": true,
                "unit": "1"
              },
              {
                "of": "neuro.tfr",
                "port": "epochs",
                "output": false,
                "unit": "$T"
              },
              {
                "of": "neuro.tfr",
                "port": "power",
                "output": true,
                "unit": "{power}"
              },
              {
                "of": "neuro.tfr",
                "port": "freqs",
                "output": true,
                "unit": "Hz"
              },
              {
                "of": "neuro.tfr",
                "port": "peak_hz",
                "output": true,
                "unit": "Hz"
              },
              {
                "of": "neuro.cdsa",
                "port": "signal",
                "output": false,
                "unit": "$T"
              },
              {
                "of": "neuro.cdsa",
                "port": "psd_db",
                "output": true,
                "unit": "{dB}"
              },
              {
                "of": "neuro.cdsa",
                "port": "freqs",
                "output": true,
                "unit": "Hz"
              },
              {
                "of": "neuro.cdsa",
                "port": "windows",
                "output": true,
                "unit": "{count}"
              }
            ]
          },
          "conditions": [
            {
              "id": "compiles",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "it builds offline, confined, against flowRS's crates and lock (5 test binaries)"
            },
            {
              "id": "tests",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "16 passed, each binary run alone under seatbelt (3 named in the manifest, all passed); 0 ignored; doc tests are not run"
            },
            {
              "id": "no_runtime_install",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no program started and nothing written outside its directories, built and run confined; every crate is one flowRS's lock pins; no process or library loading in its Rust (17020 other denials, reads and lookups, recorded)"
            },
            {
              "id": "no_undeclared_network",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no socket and no name lookup, built and run with the network denied; no socket API or network crate in its Rust"
            },
            {
              "id": "units",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "19 ports read from its code, each declared, each as the manifest says"
            }
          ],
          "toolchain": {
            "rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
            "cargo": "cargo 1.99.1 (5f94df478 2026-08-27)",
            "host": "aarch64-apple-darwin",
            "sandbox": "seatbelt",
            "observation": "kernel reports read back (canary seen)"
          },
          "flowrs_commit": "83e12a4b73221ac7b3c48ea545c860be180100ef",
          "verified_at": "2026-11-02T18:35:16Z",
          "verifier": "flowrs-registry 0.1.0"
        },
        "signature": {
          "v": 2,
          "key": "dc5d537054e6ca29b068f7a4375d0e8140af371410bd357235a146ef44d94ed33b6dfbe9c7a7ac772ec9d9ddaae7ca7b8028c9e163e39bfef3192748d9dd4e9ec4e6a705462ab98fbf030e294f78eadadd10122b0bd93a146be65c19751d4ec6eabf441d7e841630c495b2d57f41283232c45b3b4bb774c41be1bce61d551264603a500f3f387950685e4576dc280247b88fcf4dec7ee268e4d487b127d0bf79fd7a9d337e51d2c29d981f3f1b89afffbabff3f20077a90af83de9b4e0c75793d7d988857556d556e7c137c3917468f1d3a09a2066145d371ddf0ac2c37372974741d4e442e02a3c5e4c5e41f7222a54b3b3727610118f93b3d5ffc2bd2d2f7f91c8335ec0f840bfc4de7a43575f3b2db7eecb6f9585a37fb5908493d024d74e63b2dc945ea2f18ce3c542cacc0d64abeea6cb301ca8b22dc8d3cc3b7ee1b0999b62d6e8221d2c6b7f527a16ddaf9a8fb8fd2d94d90f6f4e6738015d9fd0e9fd47ff80c3aea251b570ebd0f16cb917fa39d6adca0e5359ccae44a4f4668314c263d85c336bb01d981e87ba267655232b095ba02bfc402257a5a1832f2a55f18aa5e94a75add7c7b77ce763773d3f57e326e45a7aa5de1bd6e3ee0b2f87a565494732a5c9bc15f442358a44f5093f32b7e4ab176afde3af7eff0af88cf4ee1870616252e75c639b54e7f4ccda08c7139488356b71fedae03c6c30a767311a1a7170ee04423d3476c85102287cedfaa5935a3d69737903a479f3051b254e3e90b97802497ec4ce32a3798df2436a1ac684b41c661f395251a286ea179c6011b98fc6cf34fe2408a2968478e30bb06e62ac6477cd32d5d9d560f65c5ae9d0ff66721629f8c00f06ebd229b68ea17dfbedbc3f05cf6211e26c163eabd213127808fbef5ac91d7f7cf0da00a96a40af412860080c7c558ae1e820bd55b6be4dd2e2337bdd783a081863b89185e1d9c09595ad43b7a6aba9f37546ca8bcce7eb674e0077732839c9af8337c01f48b6b75faa9f3390052b3f8246b33140f88401adbaeaaf82f50c75cd6393c83f4e742888d6952dddca0114e114758c124dfb77121fd348bc83588155ff82ba1a5dea3cc9aeaee08c5d853b7ac6b6066efe849f731ceb5594027bf8d8dc7984924d901cee0e1dc3b097f7d4616c689f9b082bb8d88a13846afdd96206a09b6f208fb85d830d429da755e404a8d48d2d5df94ecfa19c1f7ac92b9f8e2d1fe515932571f96acb264209acc35ed3ae5ab790fbc9dcb2e30a7dfdd61c944e5e6930a0344b38697887dc68eed1574750003138fc181519a56598f53bb216e264d7a9ea990d87194798e62153189e7bb5c015bb4d0dca87d453a50b5cfe93e8929366d2f743c40074bbb88f9b62ce65676685db60a21ac41761b08e1d9a9604a10ac7e38cc90c7dd610c69d9751d77fb13b0eb91df5ecb145b48b85c039fecf576d65bb3c29ca5273e0d5bacf0c7ef1eb61a94cda9a1a2002ef69e62578069533d287d2efb01ded3e44961ae9ea096f90ecc95930c25a3db3e3a8a116b23e33126c932bd6f3e427d559d64272e03f94c1e3aeceed574aa4c2c5745ebe5ac61db1bc7b4ab199ec55fee156be6ae5ba44296074237f355e4df01d13a8a212fa731c6510d0c43a5fc338a3392272550a10a328cdb1409e9133bd0d79801bc6aa99e361930bee2946d2f7f705eb1be381fbdd6a0923cfc1778607577473344a3b85b67be5e31f5c2271abdccd74e7b149dece024919f358f6adbe46b76e74d8dc8a0ece0a0d278b1de87f67f0a7e6cf54f3cfd54c0a6a5b2143fd900d90c9be7626617ecabb8439c34ad2a4853a6593d51c48e11a31b442d18dab3b4bfec198115c0e1db747f1de7b708d0e95f3db3e8c2eb3baa23ad6d0312ee315a7c0de1bd852b1cb68d02334b8e3187ffe5cb5b6cd4b01a43329899db572f61d6e5dfe22c3862403bb5c836ecdee4206206ff549e1587f788a38c3af0a36db60e70bce08b7318470a0fc58efccf1e13a362b010a29df4c5ebbc8bbfeb26b35ab8aee6b46a223b9784467b9f5f864818e1d5d466d059a0cf7a3c41f5ac308d25a66c4c7611fcec595253a8159f0d0a2d34c7aaa1d6b27162046a95185b68121b81a618750f8ba84f401f217aeb664a66f6357bfc7b1702b6fd34ffe1a32010584c3a84468de88a92c93ab5bd840ba52cc8ea4e9a68ded4acfc624031ec2443287877886db6efc64af01f7bf80782f8c5b3dda3b4cb5c3425028d7ef7f8f4177d437a61787ad6b325cd79ddcc3bfd9e1092ef118524e6c7c745b28ba8407ced9055d48c7275e1caadb88ea67bfdbe66563603de244bd3740b82153df340cc70c6ca947d6da9eb126e627666370e266aab079582e633fbad606c1535e4a15a25acb5efd4ae0cfeb03eeeb01a52d1ac3a5486cde1a151f7950fd5b68df976e843ceaa4d1e7c1644fa82984ec7d8405c6950674c3c3eeeb8a28aba272a244b26a11e07935a1ae362b1b3ddf900006fccc7b798b1ee73c8d4ae2245fad870924c4ff82ca92befb3aa6c960a19983c77f9d563d6fd529600f19897359ff641cd8db26cf065375094b0508c822809dd888cb3de0248177825e042f759505459036177c9c2e38f81806fdd183579f135019492e1e05b64a28fee0a7f48903aa9bf4d3a5bc73f0b15db50e2ead4b03e09c84d5687a17b5f5dd59e84934a5793994d73f74ae58fdb78030888cf8bad5c6f22942b241d8ee50be649668b15571968c796afcb5f749787bced05678144b2185aee171244291d7caf3d6a3c89b82f0ba02166938",
          "key_id": "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf",
          "ed25519": "64567845d5f9d62c7a7535ffdc1f718061f6a46663831e8720302eaed9e040f333aebfa48d6eae45289a76ff2e1f47af76cfe90d697d0706e9a798d861d9190d",
          "ml_dsa_65": "b3370688d006b81369194a33f1ad927b7a658e00427902286421ec584c6cd739357631ac55ea77ff8314abd6490b3082c3dbd2cb89922458f4b06885f5205fb058ad90577849e4889ebf3c2aa13a360f95f8eb8ed51798589ca97f866f453d719f30ab913a3b01ab22891ecbff90c83068894959899f6c473e9450331b1393625200422826c7ef1200b77711f32fb37dcdbdb5d4127823d94d937effadb06a8599e6121aa53c802d5cc4da05629f6947547d883d53eb566189be49b5bb9f7caaa87ba86cdcece1f83129194a37d5a82d241d60305091b351561975e03ba5f2ac0c189a6b1805343c0fa9c5be6548c62cd4f16ba74418bc78e4c38ed7679096e0c941114885311f1d53fbcaae2956681dbe5d96e2401469689eb1f769b914c9ab8efde4a708c3c433a3680b2885143b5f008c62cff70da746dc4eeb1a3bb2c88192d155e290e268de67128b0a60c3786d752b62e971e80e89c66c3cf81bc1c3e7da98b16f3350cf5bba1daf976543b9e67bbc5c386401abc72a9418b6cff7809435172b4224059228d4015aadc282813737db02f63e15495370e765fcc1848a2e47607b8a6268caf230eb4f6ee30a95ad79f2ffe53fb5a48d16352699d38d892abadd0c88b2aba97fe4893cc31d3fbd02b66b063b92dc353106f5a4fd31d4de9a78511097e5e2c7bd26393ecf9185446b579ba0511293a37281bae1c6181bf9b1bbbc68872e3ae0dd8a364280a7a5abb68ae14b3988357419a85353ee0d996a748667f62a0f7918dfaab83e2913021d6c576b79e145931c72079d61dbcb1ca733d3c35d0113363ac71e34bc44c346df5c2e61ec73d9b5b54d6c3d4ad621b613843b2f708ea9fe966e6cebeca965cdb377ace41f2761aea72d18c6e3394274aa828ae2d21ed56d1b2956d88e4b5bbb7de12b30e6aed5c17b81cb77c5367613f319e52e9f2c0fe879afb010dc029f9f08d9f6e1722758b35ca9ce53963f17cbc3eee8d5fc144eff349445187eb9fe69cc6be4206258b3f91827d896504b3e8caa251af1b0374baf4540008e652934e9326011deca447c3497f79bf645cce554fcd3ac870032a47f9ae7ca03d3cc5f3b408440cfcb820746a532f40f85cce38d1f2463226f295327a9770b072f969e574acc0767455956786f34798a1ca87be23118b40c64bc5b84d470c374ed5ba70ac6d5fe2f653f89b86798337c008f9c0b12f6ad0cbcafd16c2d154413cd9174030f721a63ddb8a508053f103c47e041083a45d100da82f872dc8c53e5370706c2e8a04aa46a3cfe236edf8560f623a2eed2b5ce72d5e31f2076d94f82536f5b228a04091caf53eca84a6e30e09d4e7a58b6f7e63c2d0d758334a174c7d8fe0e07c3a3c342e3274e6e5bc69e840af5fd299839ebf727e785f82215cf6225d8958ae07c0a32b9abae1b31f03f28b6125ad7e139e02beb8672c0ff064b9178c0d90f90db1fc9760c478fc0e44d5f53fc1eaca1aa3a8a0c412541b6bfbf9af19f62a55312028f45ba2793bc125a1de7cec222906436a906f7848989cfb72fda502bdbc7b39b97412e3a83df0d6c0b3c81818e03d3f6b6a295c938bcc1f90ae56482f1377577a29dde50adfccb27d59411cf7560fa8eab87a7ad7004599f321fc6f717556eaf8c530310a96b3918e4308f3a38f1d01fde4bad9d8d963af27be20558e24987067f8b37decca8b66dffe2bc161fc979cf7f40679c544e624db9a2b65e8bb55577f264d1ce354a4758a8f97055b880b5d61a3580836bc402d872ed45992ded4e40f452b8a4520258181d09fe9421074aaff7f0e7ab50c39c3dc7afcdbfffef7656584485586fd8952a736db0310b2705912297df16602a8c536b64d38d91d099df1cc072e2874b188282309e0aec953e905aeff4532c1326ad8b71e19880b09d9487b71657fe214f32fe38b63e235fcd11439d2589f22a4070cf6e7beefb30daf5e724f3c6ffd080789ff08ef2f7ba806874435b082ffcc752162d2f9c2a2c0cbce243947dc8c97fbd839de99e5a30d318563c23fc8d26ced256d1d2bf118f7a6b8cb6cc195b76cec653d1baabdc31a6c978f94021764ae47d24f63afeff4205db03d1ef3a78e1e6fe3e28f0f18a4d45ea0074595385e543379c9c4882c0d9ee2ca617a0b72f76a8a56f0e3fe2c871859876b48edfaa16ee1e689b554683b6bdd5780c7171fe881ed683cb63a45036d5041bc282293de59d188be34dcbc2b11e8efc2f8309eaddf4b1fd02f763538910ea1a9f4da0de66ca98804c7f0e59b2d1e4994fc241555b1ba262f7758f433afb6fa4ffce23d40aec5971b880d223faf2a5170ed1e28d43a43f23ef033ea381e6b3e560226e1236efff498c9b51620763819c8a0efa5e3262ef8ae9a04bb6422c8dab4b8b67a3c118e08303e5ff22bed3b1093fd9c6d5294f11a0e2d9b7477d37f839d0520012f1d573338772cd0e4f76d94ba643d9ea3966e57ff8b12f5c426c96835748cc716877f6c390e1c8ee7e8094933605072cfbacc954150253b3b4c35d58d5eb4b84cf461be4b38606953576aced481d04f3f94b7f2d098efcedba6ea31ce96e8e292b5151e69261ab3527577e8d97c0d44e5071e86a7fc2059eb4a7aa1d3db291a10aaff86e5357cda865ddebc99183ba05fec6ae2a1ed46be270705a8afdfca8b24765717120782fe132230153e9c82993235d40f298722a4d66edb6e2d7f8eace4a4659393dabcfd992a7131aff09698a256e7e8b31d28f69c58432aba971541ae5e94ecd92f37bef0a714de2b1e1a4f54e40b22c3c44dee209ae7069a310bed13e542ec88be1296dada527c9edcfb76e854069e6a864814c8707e380557233efc550fb707da5b1cc49af085025bcabc7c7e7d9d09ccb4cfa18c199d1fb8ebd7dd4e28b755f3206f87723037ece4b55a2ee98f67d28cff9c4455127141c0c78ce5c460fc20ae463ae2636e2098d85cf046fd0781d90d7cf1315bf7d4d34d460122f7878b420f04d8b0b0e4c0ebe9b0cfd82c17baddc67fcd9b3b16062ddb7c8027897d3fd84e2ad9004ad532a6b748e2f92499a3c301230c06aca16ca22422be50d3b9e1ac7334c9cfeac8821fdb75134054ce3422697f209d628fdc1049ff6955e86bdb4b57e40cc7ad48d0f6df3b43acb927e59be0cf0e991f83ca8fcef23447717abe99a748d471e4e577b7a44550c8322aa6222d0f57152175183cc81dfeaff77812df1c7a723e659dbc2f11699e1931cc885ccf8a167a3125dfa220d81164a8f48508e5ad9d35525923f56fb90ed8c6191c7c91d7eab633c997f9e08ec467d246bc97f3f7272ba97392bbf268967641245ed2e74b1e1bf7e0cb45394a33a09f7b8078fcc54ce0c91bbb1911fa94d8d20947d71e8612a8b7717bdd1c55a911ed61a9318ad15b103c1d9ef74a1eb1d37fa7f56f743a35dae3d8b945bff9ffb3a89a616a12de8007e9b648b5bece4ae4375953805c1aad38d93091483fde7adce195457a1c5c9500428b9744b2efe35b5ab715667c3601183115052b8853dd2bc0a3a4a67754a02289f7717ce4761c9ec088f28fc6a76cb147a525d76eb1f4883a5aac80ed7758dd8f1d25154adfc5cd0fefcb569978079c8b9f7781146bee7b7c97ccf1ba7204f22a0432056ace81e8096b5f0f2a035b1fc20645b7181ef36c1d379be4e0fb9242417ffafd24208af5f2ad485d8cdef02f5ddefa75603775f828a3b474b4cead4682713784f27f9c120bea5c1d8a5e62a55b9070ebae41ea18f0ce4d349802ac4a8c9e6a8fc9b7d6ca27ba2d0cd58a51a8964d5719341b68290406bbc6eb2e6f5aa9c4a7c61ad59d9c14a129137a727bc5f471de53d9b50f85009175724ff21092d1645875a4a7cb9f70782c7912408ba484a1d19ce3db91135cf1bbc7d2b14c4b10f48b1a6b643dc91d0c1c14af92d572eeb6ebb967b87931a6409f4a2acde01151758cc6b76172b71dfce3833c6f3c3d9725405f9a8b0bc13a7cc11c49c9fe124514ad6e1c95e34162054c5d80d1b5f46d802b1ccfd12e3805f1a80c5d83edc72904d488024c73709886901a0be5c2ca2951112654592fde710db9acdf44964d9f3ead7eac545fb85c5879565060f610faaa10f434274e9d0c191f040d1ba6263872625e73aba20fe311a65f577de694cdfd628f7bbe3939e237cb078198207fcdbd0409aecbc095bf6b24679b8423d33f2e71080ddfb863a8ed566ff65cf1f55634d04aa93ad4fdbddd579d004cee8afc47b1fcb917eb3fd5956424bd46deaf324090c4834d1a67dc16b9e3127612e1e556ac66366d49bdeef7a186be01906debc674864f9fec2687e3779990d7fbcc988212530addf1a7e6d54302d4d66a0ae4b7ca073f5cbfbcd91dcc853b8ce67b68bb6af65bb59e0639c5fba2969b203a02ca67ad0225bf70608445ea81e6a315c894b04289aea79997e3f80ece73f305fe0e9f4b88ee892f55a4789cb3f1aead5d516657cf40577d2e2def6bf3f2c45620d9e22177fc6c3983f25d6249def2cc5284e95e4ac5bcb0b3ab7d032684341af204a8b65fd0b60aa3f76439cd746a33fb2e68cf4ff79d793b80c9f432172fc0e1f089c223748ac0623648dc3ccf30a2e4873cecff716223751c0da000000000000000000000000000000000000000000000000000000000002060d11141a"
        }
      }
    },
    {
      "name": "node-scale",
      "version": "0.1.0",
      "kind": "widget",
      "hash": "sha256:7680dc31a561417dda716fb78482c614617d9af2beea6674a6154171175c23a8",
      "archive": "packages/7680dc31a561417dda716fb78482c614617d9af2beea6674a6154171175c23a8.fpkg",
      "size": 12224,
      "record": {
        "record": {
          "schema": "flowrs.registry.record/1",
          "package": {
            "name": "node-scale",
            "version": "0.1.0",
            "kind": "widget"
          },
          "hash": "sha256:7680dc31a561417dda716fb78482c614617d9af2beea6674a6154171175c23a8",
          "manifest": {
            "schema": "flowrs.package/1",
            "name": "node-scale",
            "version": "0.1.0",
            "kind": "widget",
            "licence": "Apache-2.0",
            "description": "Scale: out = in × gain. The worked example of a widget defined outside flowRS's core.",
            "provides": [
              "node.scale"
            ],
            "tests": [
              "tests::an_outside_node_is_everywhere_a_builtin_is_and_is_not_a_builtin"
            ],
            "needs": {
              "network": [],
              "filesystem": []
            },
            "ports": [
              {
                "of": "node.scale",
                "port": "in",
                "output": false,
                "unit": "$T"
              },
              {
                "of": "node.scale",
                "port": "out",
                "output": true,
                "unit": "$T"
              }
            ]
          },
          "conditions": [
            {
              "id": "compiles",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "it builds offline, confined, against flowRS's crates and lock (1 test binaries)"
            },
            {
              "id": "tests",
              "status": "passed",
              "how": [
                "observed"
              ],
              "detail": "1 passed, each binary confined (1 named in the manifest, all passed); 0 ignored; doc tests are not run"
            },
            {
              "id": "no_runtime_install",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no program started and nothing written outside its directories, built and run confined; every crate is one flowRS's lock pins; no process or library loading in its Rust (435 other denials, reads and lookups, recorded)"
            },
            {
              "id": "no_undeclared_network",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "no socket and no name lookup, built and run with the network denied; no socket API or network crate in its Rust"
            },
            {
              "id": "units",
              "status": "passed",
              "how": [
                "observed",
                "static"
              ],
              "detail": "2 ports read from its code, each declared, each as the manifest says"
            }
          ],
          "toolchain": {
            "rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
            "cargo": "cargo 1.99.1 (5f94df478 2026-08-27)",
            "host": "aarch64-apple-darwin",
            "sandbox": "seatbelt",
            "observation": "kernel reports read back (canary seen)"
          },
          "flowrs_commit": "c8e377b93ba5c53a8bba207c3f050f8bc8a42a15",
          "verified_at": "2026-10-31T13:43:33Z",
          "verifier": "flowrs-registry 0.1.0"
        },
        "signature": {
          "v": 2,
          "key": "dc5d537054e6ca29b068f7a4375d0e8140af371410bd357235a146ef44d94ed33b6dfbe9c7a7ac772ec9d9ddaae7ca7b8028c9e163e39bfef3192748d9dd4e9ec4e6a705462ab98fbf030e294f78eadadd10122b0bd93a146be65c19751d4ec6eabf441d7e841630c495b2d57f41283232c45b3b4bb774c41be1bce61d551264603a500f3f387950685e4576dc280247b88fcf4dec7ee268e4d487b127d0bf79fd7a9d337e51d2c29d981f3f1b89afffbabff3f20077a90af83de9b4e0c75793d7d988857556d556e7c137c3917468f1d3a09a2066145d371ddf0ac2c37372974741d4e442e02a3c5e4c5e41f7222a54b3b3727610118f93b3d5ffc2bd2d2f7f91c8335ec0f840bfc4de7a43575f3b2db7eecb6f9585a37fb5908493d024d74e63b2dc945ea2f18ce3c542cacc0d64abeea6cb301ca8b22dc8d3cc3b7ee1b0999b62d6e8221d2c6b7f527a16ddaf9a8fb8fd2d94d90f6f4e6738015d9fd0e9fd47ff80c3aea251b570ebd0f16cb917fa39d6adca0e5359ccae44a4f4668314c263d85c336bb01d981e87ba267655232b095ba02bfc402257a5a1832f2a55f18aa5e94a75add7c7b77ce763773d3f57e326e45a7aa5de1bd6e3ee0b2f87a565494732a5c9bc15f442358a44f5093f32b7e4ab176afde3af7eff0af88cf4ee1870616252e75c639b54e7f4ccda08c7139488356b71fedae03c6c30a767311a1a7170ee04423d3476c85102287cedfaa5935a3d69737903a479f3051b254e3e90b97802497ec4ce32a3798df2436a1ac684b41c661f395251a286ea179c6011b98fc6cf34fe2408a2968478e30bb06e62ac6477cd32d5d9d560f65c5ae9d0ff66721629f8c00f06ebd229b68ea17dfbedbc3f05cf6211e26c163eabd213127808fbef5ac91d7f7cf0da00a96a40af412860080c7c558ae1e820bd55b6be4dd2e2337bdd783a081863b89185e1d9c09595ad43b7a6aba9f37546ca8bcce7eb674e0077732839c9af8337c01f48b6b75faa9f3390052b3f8246b33140f88401adbaeaaf82f50c75cd6393c83f4e742888d6952dddca0114e114758c124dfb77121fd348bc83588155ff82ba1a5dea3cc9aeaee08c5d853b7ac6b6066efe849f731ceb5594027bf8d8dc7984924d901cee0e1dc3b097f7d4616c689f9b082bb8d88a13846afdd96206a09b6f208fb85d830d429da755e404a8d48d2d5df94ecfa19c1f7ac92b9f8e2d1fe515932571f96acb264209acc35ed3ae5ab790fbc9dcb2e30a7dfdd61c944e5e6930a0344b38697887dc68eed1574750003138fc181519a56598f53bb216e264d7a9ea990d87194798e62153189e7bb5c015bb4d0dca87d453a50b5cfe93e8929366d2f743c40074bbb88f9b62ce65676685db60a21ac41761b08e1d9a9604a10ac7e38cc90c7dd610c69d9751d77fb13b0eb91df5ecb145b48b85c039fecf576d65bb3c29ca5273e0d5bacf0c7ef1eb61a94cda9a1a2002ef69e62578069533d287d2efb01ded3e44961ae9ea096f90ecc95930c25a3db3e3a8a116b23e33126c932bd6f3e427d559d64272e03f94c1e3aeceed574aa4c2c5745ebe5ac61db1bc7b4ab199ec55fee156be6ae5ba44296074237f355e4df01d13a8a212fa731c6510d0c43a5fc338a3392272550a10a328cdb1409e9133bd0d79801bc6aa99e361930bee2946d2f7f705eb1be381fbdd6a0923cfc1778607577473344a3b85b67be5e31f5c2271abdccd74e7b149dece024919f358f6adbe46b76e74d8dc8a0ece0a0d278b1de87f67f0a7e6cf54f3cfd54c0a6a5b2143fd900d90c9be7626617ecabb8439c34ad2a4853a6593d51c48e11a31b442d18dab3b4bfec198115c0e1db747f1de7b708d0e95f3db3e8c2eb3baa23ad6d0312ee315a7c0de1bd852b1cb68d02334b8e3187ffe5cb5b6cd4b01a43329899db572f61d6e5dfe22c3862403bb5c836ecdee4206206ff549e1587f788a38c3af0a36db60e70bce08b7318470a0fc58efccf1e13a362b010a29df4c5ebbc8bbfeb26b35ab8aee6b46a223b9784467b9f5f864818e1d5d466d059a0cf7a3c41f5ac308d25a66c4c7611fcec595253a8159f0d0a2d34c7aaa1d6b27162046a95185b68121b81a618750f8ba84f401f217aeb664a66f6357bfc7b1702b6fd34ffe1a32010584c3a84468de88a92c93ab5bd840ba52cc8ea4e9a68ded4acfc624031ec2443287877886db6efc64af01f7bf80782f8c5b3dda3b4cb5c3425028d7ef7f8f4177d437a61787ad6b325cd79ddcc3bfd9e1092ef118524e6c7c745b28ba8407ced9055d48c7275e1caadb88ea67bfdbe66563603de244bd3740b82153df340cc70c6ca947d6da9eb126e627666370e266aab079582e633fbad606c1535e4a15a25acb5efd4ae0cfeb03eeeb01a52d1ac3a5486cde1a151f7950fd5b68df976e843ceaa4d1e7c1644fa82984ec7d8405c6950674c3c3eeeb8a28aba272a244b26a11e07935a1ae362b1b3ddf900006fccc7b798b1ee73c8d4ae2245fad870924c4ff82ca92befb3aa6c960a19983c77f9d563d6fd529600f19897359ff641cd8db26cf065375094b0508c822809dd888cb3de0248177825e042f759505459036177c9c2e38f81806fdd183579f135019492e1e05b64a28fee0a7f48903aa9bf4d3a5bc73f0b15db50e2ead4b03e09c84d5687a17b5f5dd59e84934a5793994d73f74ae58fdb78030888cf8bad5c6f22942b241d8ee50be649668b15571968c796afcb5f749787bced05678144b2185aee171244291d7caf3d6a3c89b82f0ba02166938",
          "key_id": "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf",
          "ed25519": "bc2e9b58d88db4fbdfe3cb9218634ee4b836186317642f30e0ce10bf8cec3772ee9e7b0ec05af5ad486094e0390063a4ec2c36941bcdc2a46bec3c6391830f0b",
          "ml_dsa_65": "a82bca426ecb7282c75f8dee7d439a29b6e64996b5e4f9f72114ab8881963030a27231236cf8e60499e26703b76cf1ce4d586802e576789e8469d7d8e9e52309d2e3c74057bd4c8b33b6da15e530482c1e92d07db75dc175e374d1283af5d6c8ad23952f5a5b7d2d895f32efb07ee9cdb47801cd98d80bdd8d74bb597dae1866ba5dd7630cb54f1276b34419d88f5a31c85d09cd58108e7c5cf4d62f889cf48cd345f42d02de7fce693bc7e47be6353ed74c68b1b661e885a7841bc15d07a1dd9d5043656ca003aec50c2e74b048de694bedf5c7aba5030ba0807bc6f9e2ccb89986d940440845930c18ed6629ba86a7a08cdf37955313fb216645c0667e25b589d462bbe9d9fce2d572d16812657f722fc2a90dc2d22d5bc431c61e038835e96ab52ab7f1f191143c456a6f4e6e53b6897a4c70b8f1113e2bf3c247dfb4146064ee90c271a0959439b08bf79528574d83409208239ed56487dbd21e410cd129c5c9c0779e628deffbaf79755e4469392b2c0bd61fa116b7e5cf45b0588b42fa222e29db2c86718002f0ec6c0717e5d98b552dc9f2c8fc0fdb4ce51d732dbc4a3b046063f2834b17af3b7ef7b43a136b054934dc4bbcc9f225827141c373281892fa59827133ff58b6e5a9d5eadee7884bd409915667dc25b39a2afac06eece1d599a6b7e5d2bfbd780dc8a3f62753bf0c49b432ae1507dc6b023c0e050a9907d8764867255643a054dc00fce90b259567f25f2463025110299163779ce0a33c569ac5e1936c3a0647fc949cec71d1ba5669a15f8239fa35e82274d889e1465b49beda2f775f0e05fe902f895d6c7f29cf51a34e708dd7421529d453d5cccbafc3393361efa7475e83a6c63b5700b820ab839b6690849378c6272e230e596822e492ed4867e2397ac16eef92a315ef9e1c17b6a1b48246fe2b5daea168eb7b20078eb6ab817b58f51b1f7eec478f05a3288432d58f6d519edd5f57b725f4985de244a1c5d78070f1eb3e653ee5d6eac5fa3a478a4920d13249081a2cf22da10f30b03eccb692d58518c44d87ff14bd8370dd80bc2d3e3e8315c3b65e02adbe06de5aa70fc1adaf96d74e60600f77279b57ba85106072418110fd5dce47b9ea6eba6914de447fccaf7c83c8fb850994f6675788328b0681c90fb50f7683f1289a96516fef33440a5b051d29722088798afbf4b6d3f826d5d0ce04beeb177ebf3f377108b968f30a3d9f59e51f58eddc168c1dca1bc3023a6906180b720bcb3b49cc825e3054f60e808fecb64e66b527bd397ed12f5dc73514a0fddfe09e5f05a0186a4ac61c29e2ae42a20b6c497caca8a15d90c168e80dc00ca72a363360f5b6d627ff308ff2f6c0b5b372f5ad62e45ab69daffa08d4c3c648f3959cb629032a8ada2d65e41826de2fd8ed4178a57a0dbdd12cb08612cc2ad6fcee79e76d7080d22a5a333ca57f68cd93b67970499860b6db31ee6621f1ee9c0246d6003ac46680bea78c9b1007db8a87b2e06cbb46a3dc1ac963195092c1981e44cc16260ab31a59dfccc90846a8e474a94a70fd0b7b3d7be54cfc82b2afc18e353b2f977d53cf079126edd63f9b6af9e2e9fd5d8cdfcc18b1b3e5a4df7ba1f8d4035bf4117d0e267167c914a56da4916a74ecc0e343723b4be7f8563040e1114921fdf99723ae71acc0fde594cd7fca2a6699cb7019a86be3fc1792f291bdb7749fe35e7e5778958d5d019891a01f913c018491e4bb658861d46f7007252d28521cf356506f8d3a30ca2d9cae2eef161739f95cdde3875ae83dd5a9d0b7bbdfb9a06c5f2615dbaf1fa38229dcc9bec5c069875aa2980b60a7e106c1ac39f2f0b6993805a44a1c5d105574733a2765abb31498a055dc5c0fe1c2f0771fa13bbbc936da3f203e19475d97da576240c087f6a7338f6110f5a7fa1ba80cddef40c54256d0c6cb9e3c66128c481cff00ae61d435ffd4405bdad229579f72de7c84948e4a33682043127003a95f5a0986ace98196be4d877d02919b0679d64ee581604ec8c44efabd797edd86db0d25647c2351ac9a9837a644ec6de6a7f1b62e6a32a877a2169b6747f9036484b747af0c86b97afcd8648c523a6b68429af7f44fe0c819d08437fae621118d8eb0445e5f1ce0e49d08d8b3c1a0f329540b0baab3d6ea92e674198f2d2b8f9be501b1483ae7141791ac11df0b4bd88de433de138738565b090ced744b3b86fbfc49583853e4ebc9fcecd54fdd1158d20478fcc2deb5c90033cc2068b1da803f82092215ed5f27fdb6ad8dd8d540d432eddb94a07c48099f5bca7e8cdf411ace9a89f6167b33b56c383b5bf97cc2557085c22a21ee6611e8f864bb05a5f576921451a0397f925d208253d711837f189e4c3c52f657ff3aeac4d3b42ac38ae9c98966aad6d24dafb773f989162db1c13fcc3fd035b1b5812455a9e61b866b9e5dce6c68e8005cf689ad4b223359612883f4eec2700084a13d69abc51598f08504e1e611ef0e3504dd62d1639ab9a05c4a55f6cc6ea2f4efa3bc26fbffb79f94f7789c35a5513c4342ccad37279f99efdb816a7f18f38c79d7efab1e28f760c3dcd5b3da5681c025161df554c889c582899052c7ba186af62eed01aac3685142ed7611540461a389074ee731f72ff6419f70e6d1db666fcd4bfcafab012f37d1897c4d166a6c83d69ba6b579365f72dcfe05dfc45e435e998d6eb8c6f21c34b956a1df633648c0443f6f651c189a7d2b301bc6af6134dfbd9caf12959dea5b2b56ee6eaa0abb8419da1a4e5d0d6fe07ed299d356c981ceff65236fbcc084cc893b3a729cb4e882de4442041dc999a414259afdcc36b0e046fabf7ecc7235967fe3143704c9ad7f92fad9c02c54bffae0936839f08763a0b9932b3f7ae3f1378be3f96f740dfe5110d69168a9502e54162b4f76087233843940cffd791dc6862d83f389e0a2d9124cb76c444772355064ac98e476cb34d575a86961df93afc2d9b819e8f5c310e21967bb638be99855c65009835db6e8b4286cd9e807e31f25904741a66548ab04dd9d64ff286e7ce4124dfe121c21169b276a2ff642877702cc6719113307f45dd1cd2970d1218732a2640325e8d94b9c5b34c6f4e55b29d6e76b9295a2108e9e2d1d6b778d30c7bfe009f34f9e4b9cad9440bb257013b1225a309ad48a6e90890c832315bf3aea0d22bc847edfad6ac5529ddde1856008a6237c2f380f0b7d154adf92c1c84dbc96497e15f1b4b8a4e3cb244855891e1e13958b8a1e1d9da6e0e31df37936830e57a0a3c0fa737825f166bf8f1e62ae5ff434bf93c1bc376d3f52de90541f9bebce6a4f2564489c879da9a138a8619627c334c646fa14353960b3f1d0265c209f78314377a11e951f6229bc3173af78fb71537c41b2b48ace74a0ed2a12fbc684785bcafaf5b8005b09e53480c98f31224184e34291a815b2d5ed2ffc5a189d126cbd69034ac15c082e047e8c4c0da2e8f10f91780d00694b3ad718c7e729ea4637883bbe6aa6ef3bed4e48101f0d56086787a8935eb87288e3a9178db48770c7c04296af85807209b3f1237d02821a95d35e0d47d7dbdb780e57ca10bd000809f44f638b0d6ab542f2e2e6735e489c6423986190898a4b11ed68f07e2d11a4ccd3b1ec6d21727dd5fb970242b0a9125cefc0c0a638a2c925a2318690235e965c389ecbcdcfca75923bc8c3e2a73fbdff2c3e0af621b832ed75b03d5856aea8f8693e797e3030af07805800acd64d2c4cb377c82255d9a175dc051c25750a7c7a01d07ba67df5c74747753de8fba10a2139d01d0a80f1c833d39beba06515736ee722fe084c5443dc691fad98bd7b6eeac820e030f86031521440eeafa1ceab54240d2eaba1cf1cf10dbd0f27a40720cc7fa6c9b3559fbc527ce54d98a3615d7245cfed28f6953b14b092748a9be67393100a12ed238e09600142eef9c008f828a743d123b3b09f53a2f919e4c546936579ea9038d5d4eb9e6c9b0a55060f9b2142fb7683d9efa5dec126bad8004d82905aac0554fdd1496d78b7d57bb8468570a37e0ddac84b399230a6c08e12cdc3e63947f3413c15d5f7f3d9d3085e5a20beeece6ae0b2d49d720783325910d23b0a107812c5a9933d041f6b029e969bb28422c507dc94f1a765b24eb380a5e8729a41ec26e705cec2bec0beceb7edba74d84b2746e850edb588602c288facfa59df34f8e224da4d078b55cd9b0fc117bf606552846dc745043b038bceea22921f43f8438f3f93945abc7b3a7ec2f04758da03ae6942848f7f04f6bcb4ff6d62490f88cae24c6f71500578a668dea219c93643328131bf1ef89751bb2f3461d41e7f2823a187d6743c01b8d37e26bde2f186857f4ada07fb2f1c6389af4d202121374bb2cc41f4f272ae892f0f74c0c566d0bb1a1d9a7a72d1c0f0563e06cf076414a677c664110af4590b070c9dd597d1ca6f6b4488cb34d5a651b4b8b72ccbc2ba7ad1cb81507c636ce0894e3bd98f65f8072f58fb35a227d6b8e74a8d687b3a8d95d67ddcbf9b6f68bf83ee6b086e65a7ab1436379a0c2a04b510acc0e2f8084be2e1b199754f1017ac0b1062d60eda17314971747e8089f1f935bac9dae4ebf9102935477477858add33358abcbfccda133f63a46669bced00000000000000000000000000000a111a212529"
        }
      }
    }
  ]
}
