diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8a8429f1a..af1d3d17a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -263,6 +263,21 @@ if (BUILD_TESTING AND GTest_FOUND) target_link_libraries(test_dash_conformance PRIVATE c2pool_payout c2pool_hashrate c2pool_merged_mining) # OBJECT-lib SCC direct-naming (#22/#39): core stratum/web_server TUs gtest_add_tests(test_dash_conformance "" AUTO) + # DASH share-v16 BYTE-PARITY KAT (T1c gate): round-trips REAL captured + # p2pool-dash oracle-gate wire bytes (test/data/dash_oracle_corpus.hpp) + # through the production load_share/DashFormatter path and demands byte + # identity — the real-corpus test the 2026-07-21 audit flagged as missing. + # Mirrors the test_dash_conformance link set. + add_executable(test_dash_oracle_byte_parity test_dash_oracle_byte_parity.cpp) + target_link_libraries(test_dash_oracle_byte_parity PRIVATE + GTest::gtest_main GTest::gtest + dash_x11 core + nlohmann_json::nlohmann_json + ${Boost_LIBRARIES} + ) + target_link_libraries(test_dash_oracle_byte_parity PRIVATE c2pool_payout c2pool_hashrate c2pool_merged_mining) # OBJECT-lib SCC direct-naming (#22/#39): core stratum/web_server TUs + gtest_add_tests(test_dash_oracle_byte_parity "" AUTO) + # DASH min-protocol-version ratchet gate KAT (#643, option a): pure, header-only # policy object; no socket/ltc/pool dependency. Mirrors the test_dash_conformance link set. add_executable(test_dash_min_protocol_gate test_dash_min_protocol_gate.cpp) diff --git a/test/data/dash_oracle_corpus.hpp b/test/data/dash_oracle_corpus.hpp new file mode 100644 index 000000000..4215641df --- /dev/null +++ b/test/data/dash_oracle_corpus.hpp @@ -0,0 +1,266 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// AUTO-GENERATED from the p2pool-dash oracle-gate byte-parity corpus. +// Source: controlled p2pool-dash node (VM210) JOINED to the live public +// sharechain (share-v16 / min-proto-1700), capturing canonical SHARE_RAW +// wire bytes + parsed SHARE_RECV fields. Each `raw` is the exact on-wire +// share entry [VarInt type=16][VarStr contents] as gossiped by the fork, +// cross-validated byte-identical across 4 independent peers. +// These are the T1c byte-parity targets: c2pool serialize(parse(raw)) == raw. +#pragma once +#include +#include +#include + +namespace dash_oracle_corpus { + +struct OracleVector { + const char* share_hash; // p2pool share id (display order) + const char* raw_hex; // full wire entry: VarInt(type)+VarStr(contents) + const char* prev_hash; // previous_share_hash (display order) + const char* payout_pubkey_hash; // miner pubkey hash (display order, as oracle logs) + const char* payout_script; // reconstructed P2PKH scriptPubKey (wire order) + uint32_t donation; // donation bps + uint32_t new_tx_count; // len(new_transaction_hashes) + uint32_t share_version; // == 16 +}; + +// 29 distinct canonical shares (deduped by share_hash). +inline const std::vector& vectors() { + static const std::vector v = { + { + "000000000000052d1068bc6ab95c2d8cb9f237a677f8eb6e13bb11de54280bce", + "10fd3f03fe000000203409483e824d2bf2b03fdb0b39954e911967e57b592114e73600000000000000d448626a63c243199274f5d26c7f883926e10d7ad24ee323f12bede52405254c85a95f533e9b0100000000001203bb4b260d2f5032506f6f6c2d444153482faf0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f32980200007ce9b34741e4d6d8971a735946494cdbc5e8602c5209b98e4d528d0a0000000090020010b9fde907000000000203213661bbb2f70200000000225874463535637a4e59686f797a33344a34556f69356d506d483855536b313251476bfe4af204000000000380d760dcc534ffcefab60dad12be0bc84e563eeeb2819211e662b7b38225acd6f28942058a90a749261313fda82f58e4ee96e3e6fa4a5b359009890a03827f53cd3a677343738a66be0632ccebd28af9ef9e423d5a7c06538c86a10e9189215c03000000010002b6787328232cf01440dd23f5594fdb4fda3a1deabd068879b24e000000000000b97c461b7d59021bc648626aef880e00e44a7af5575ae0231300000000000000000a0000007f090000311d230581d1bccf8931a9c2fb2ab989af6a6fddba9ba32dc779b2367109576d00fd22010280d760dcc534ffcefab60dad12be0bc84e563eeeb2819211e662b7b38225acd6ac787e9a8a38f1a94e9055fdbb59359bea418bc2eb6e2014d852ce7f654a23dab0af0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000", + "0000000000019b3e535fa9854c250524e5ed2bf123e34ed27a0de12639887f6c", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 3, 16, + }, + { + "000000000000091bb4cc7ac21ebc01d8934df77c31a36e3eabe0fcc727d0c159", + "10fdc903fe000000203409483e824d2bf2b03fdb0b39954e911967e57b592114e73600000000000000e348626a63c24319824c6b8f64d108c9b21d0a136063b03caa5d932410c866909bc3cb0a42270000000000001203bb4b260d2f5032506f6f6c2d444153482faf0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000de6670d69fcf66348b47c08efd26b8bfbc190990472bfa5483548d0a000000000000001062ffe907000000000203213661bbb2f70200000000225874463535637a4e59686f797a33344a34556f69356d506d483855536b313251476ba74cf20400000000056f4dcd59bc468783efc6dfba29f4f784077583511ac1c46b5ffadc207e6c1f305380d37aff3b3470a996c8660e86680f1d473a6afac4961605ed507c64596aa3620bd1e2dd9426657fcaaeb92624b55e01fe0ce64b264a94040ff90001839f271e6aa282db56d4fcde2596198f3cc12fc35fa49eb7ce5fcc71ba06fd0dbad0a316b82677ac111e86f2fdf8ee6d1144dee465dcacbd97964688ed4cca24988b52080000020000010002020102020003000464f2c49007f98048de5c4b3cb2804928430a88b463c3b4e2c29900000000000071aa461b035b021bf148626af1880e0073be42554433e123130000000000000000000000002c1500009c0a161f0c1924bffeff5fa559d033baacd22b2708396f78947a23c0e783eadc00fd2201046f4dcd59bc468783efc6dfba29f4f784077583511ac1c46b5ffadc207e6c1f300a93559a92ea99894a0c38f4ed9505240147b65c63835dc8405c626f63e058f6ce07efcd22f9d49d19357e90b9ed3f7d4056ee0baf4987fd1185c4d9a1d69b8f34c0b8874dfdff1215c8316087b846fc457d4f3145dd88cf4a57a3ae70ebc0d2b0af0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000", + "00000000000027420acbc39b9066c81024935daa3cb06360130a1db2c908d164", + "54fa2b47900919bcbfb826fd8ec0478b3466cf9f", + "76a9149fcf66348b47c08efd26b8bfbc190990472bfa5488ac", + 0, 5, 16, + }, + { + "0000000000000dd490658924e3530c2a36b853f6797c7ab45daa16fb7f5dfd15", + "10fdd503fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000007048626a4cf73c19607812697b6b9fd8f03a82164703e483b1fe5be565408ed338c92245624b0000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f980200005c24045241e4d6d8971a735946494cdbc5e8602c5209b98eb01b8f0a000000008f020010c454eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d61483809a2f30400000000003e0c001200120115001202050012031204120510001001120612071208120901000600040007000300160016010c01120a0701120b04010c021602120c0702120d120e0b0010030b011603121404020301120f03021002121012110b020a0012120a01070303031004100512131215010112160b030b04020002010e00e3419a8e8d12b85dfcf7b549baf468fcac536e10a7477277f465010000000000d41b491bdc6f021b7e48626aeb880e0053cf048833afde23130000000000000000000000009e6c00001d2c48d52b21b6687f217ace3778ab10901466a88f3c7b97c9a83f9e7691fb6400fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed2e8b66a79af1345b63fc236e5a3d883fe1c73bc00971aa15777315838f62b6c99d0cd19b502fdd376f1face3d2d6b32dc29860653fba7438db94f5fca7db3a6fb0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000004b624522c938d38e4065e55bfeb183e4034716823af0d89f6b7b", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 0, 16, + }, + { + "00000000000027420acbc39b9066c81024935daa3cb06360130a1db2c908d164", + "10fddf02fe000000203409483e824d2bf2b03fdb0b39954e911967e57b592114e73600000000000000d448626a63c243196e202885ce0b2854de11bb136eebf877a637f2b98c2d5cb96abc68102d050000000000001203bb4b260d2f5032506f6f6c2d444153482faf0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f329802000061caef5141e4d6d8971a735946494cdbc5e8602c5209b98e4d528d0a000000008f020010b9fde907000000000203213661bbb2f70200000000225874463535637a4e59686f797a33344a34556f69356d506d483855536b313251476bfe4af20400000000000301000101010214563c69f0ce52baeb2669e0ea3895ea3d9a72882a00d6086f50000000000000c5f3461b755d021bdc48626af0880e00116a2ef695c6e02313000000000000000009000000695f00009d86d4abced41350f0fd019a4e8e7b8f60b0cf774e0c8c78d722fe31c3a9f75c00fd22010280d760dcc534ffcefab60dad12be0bc84e563eeeb2819211e662b7b38225acd6ac787e9a8a38f1a94e9055fdbb59359bea418bc2eb6e2014d852ce7f654a23dab0af0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000", + "000000000000052d1068bc6ab95c2d8cb9f237a677f8eb6e13bb11de54280bce", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 0, 16, + }, + { + "0000000000004b624522c938d38e4065e55bfeb183e4034716823af0d89f6b7b", + "10fd1504fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000007048626a4cf73c19b038766cf6dbcd739b1bd40e74cd730b68f1dfbb21b3b1230f0847778a8f0000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000914055ae41e4d6d8971a735946494cdbc5e8602c5209b98eb01b8f0a000000008f020010c454eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d61483809a2f3040000000002ee61b9ac28c038656c4e5faa6810961582a96c8501d37c5292906161fb0befa4397031a761bd26dcc8ff8d77469632b90654ccc5eace909842da8790a6fface63e0b00110011011400110204001103110411050f000f01110611071108110900000500030006000200150015010b01110a0601110b03010b021502110c0602110d110e0a000f030a011503111403020201110f02020f02111011110a02090011120901060302030f040f0511131115000111160a030a04010001010d00c0fd55aebe3525674e6df7c09da754bdf9b69617fdc75a57732801000000000020c6491b8975021b7848626aea880e00a9671ce82646de2313000000000000000002000000971a0000fed79f6beb9955411e14422f5b4296392dc753b524340870597b86c7f675703300fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed2e8b66a79af1345b63fc236e5a3d883fe1c73bc00971aa15777315838f62b6c99d0cd19b502fdd376f1face3d2d6b32dc29860653fba7438db94f5fca7db3a6fb0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000008f8a7747080f23b1b321bbdff1680b73cd740ed41b9b73cddbf6", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 2, 16, + }, + { + "0000000000007fcd328e4d17e5b74f68c0fc41535f5a9f6d203818ee637b080f", + "10fd8103fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000002547626a4cf73c19843e7bcaa033815a493813568872002eda3bf8b91c1dda99a05d0dd27b650000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e58019050f9e94bd91be02253d7e7904d2de1de70d9fc15c0bd97f6ccdb2dbd5cee746b91082511eda8ec0de9df7a0020c26a00a7b9308a57812f2aecc6aab68cf60ebe8224cb81fd5495b806cad90d017938fddb7cde117a88bde565303f2ebe46619218482f98020000775f49b341e4d6d8971a735946494cdbc5e8602c5209b98ed5418d0a00000000900200105ff1e907000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838a43ef20400000000041406115aae53218a18568e34ea4fbb5c978db5ec3f6804e544f4a94ae54a8a5405d8efd9293fb32b0433aa4f2c4fcbb56dc7872f4151ce2f27dd901fdd0f9a8353970ec3a374a68d5bb70d8c6d7f6585fe1d475c5ca7763c4cef7a08b44eabd2de38f6e668fb174b41839bd2244bd53a7b122b2d0edd38d50e90086ffc7ff2110400000001000200037cac33ca5eee841ddedb5d4ddc105e816967d750fe806845bb60020000000000b432461b0657021b2647626ad5880e0043aec1b5bc97d52313000000000000000000000000c8620000c1dcc06da2bb49562a402a37c1f8c7eb2c1ab9dc3f15d7a3d9d9d5b2de8c653d00fd2201031406115aae53218a18568e34ea4fbb5c978db5ec3f6804e544f4a94ae54a8a54f55d4da27cf2f9038f6bc9a8d71b6dcacb42125d5222bb14a89717f18b79d48c1f3de071caf097788af141530f87e80f9dc1a9c1935086c79358bd0c1a733967b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e58019050f9e94bd91be02253d7e7904d2de1de70d9fc15c0bd97f6ccdb2dbd5cee746b91082511eda8ec0de9df7a0020c26a00a7b9308a57812f2aecc6aab68cf60ebe8224cb81fd5495b806cad90d017938fddb7cde117a88bde565303f2ebe46619218482f98020000", + "000000000000657bd20d5da099da1d1cb9f83bda2e007288561338495a8133a0", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 4, 16, + }, + { + "0000000000008162fac615243ad9585c01a2cd0f193d667447f60bc2e876b752", + "10fd4f04fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d3000000000000000bb47626a4cf73c19ea81a82dd688f88375c439337ee0e4810a680b2a49f66b5d96b7136b0ed20000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000dee962e241e4d6d8971a735946494cdbc5e8602c5209b98ef8af8e0a0000000090020010fa03eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148383f51f30400000000059d22f252b3db1670fb1c185f166162aa5ae317e784ca50d8a887e25254f30eb64a76734a5f45c7b63308ac869875acb39b7d17870024d3d792cbffbd188672c2b8bf9ebd051d6ce6f9165470cd31281ee7f8c2f8bba2fc471a307df1cc09310b3f773594ae7da8d117cec3f314dc401e1abb632fcd2aac3cf7278f57e7e7a195952a8b94ad66ce152e291a3ae56055053df51b9369014741030825993c5b78c32b0100070007010a0007020703070407050500050107060707070807090b000b010101070a070b01020b02070c070d070e000005030001070f050207100711000207120b030504050507130714071507160003000403006d578b52a086950ba738c4fd426a6259aa21c035afebf3306728000000000000d6ca481b296d021bc647626ae0880e008a82e4b0ef28da23130000000000000000000000002a2a0000d5029c0eaa3ef6355882ca8b65a64de582fe42cd1a8106f08a8377542bca5ad800fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabb7564e67ed20e1c3a43985da9a4d2b916e38501cf0feec020c4d028b3fc356ac6d65ae054b70152190502d55a7a680f642a2bf49232ee9ae26807e9c7f7ef3e0286156ffe85dd90128090f4d747f8ee51f5b1eb8d32c1742e636802135e73303deed57593a1645af701c5e8120675a0d69fade1c1aa31b3ccf1c599e17d9f0f7b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000000d20e6b13b7965d6bf6492a0b680a81e4e07e3339c47583f888d6", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 5, 16, + }, + { + "00000000000086c71f8dea6f40bc12ae50839b354e06b3db204b56c5e96fda36", + "10fd4d04fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000004348626a4cf73c19c83a8f41d92ce721a5ecea968dd251940bccc3223c6b3394c97d0abac5020200000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000ce6016de41e4d6d8971a735946494cdbc5e8602c5209b98e83058f0a000000008f0200102244eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148386791f3040000000004597c173726eb7a98690f30bd3d316881e1405a06c58d7aa931c644c6a9f1dbad5e7ebee837b0c9bb60a4d2dbb8ed1b3a6be68a117068fbdcf4ec31720cc81afa5c10700f13d2c10d5e58fa5bdea6e8f7a6e369c4b12760654b4c7c6159d6b97eac70f2697f86ae802396fb630a083a4f0ed67dfa47548e5bbf361d7755a757013a09000f000f0112000f0202000f030f040f050d000d010f060f070f080f0903000100040000001300130109010f0a04010f0b0101090213020f0c04020f0d0f0e08000d03080113030f14010200010f0f00020d020f100f11080207000f120701040300030d040d050f130f150f16080308040b00cf276b29a64482e91730c127a5fab66e27c3b1243d9eac7293210200000000006914481b1467021b4048626ae8880e00484019a1e374dd2313000000000000000001000000b2bc0000e9d1425e549122276ad3b3f65e27c16d8410c5c77af1a007ff4b68e06ce580a400fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed7336de5b980ba71958e505a2ec795f329366f1bbb9e453810bff02a503aa9bc10c5c38ba2d4e64494e63fc7de38ca845e93c8002464f328498c578110f46e5bcb0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "00000000000202c5ba0a7dc994336b3c22c3cc0b9451d28d96eaeca521e72cd9", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 4, 16, + }, + { + "0000000000008f8a7747080f23b1b321bbdff1680b73cd740ed41b9b73cddbf6", + "10fd1104fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000006148626a4cf73c19ae5e55b036da6fe9c5564b20dbb3064e359b8350ae12bc406fea8d1fc7860000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000d419b10a41e4d6d8971a735946494cdbc5e8602c5209b98e46078f0a000000008f0200107445eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838b992f3040000000002d846d15aefca1ccb48c824d23c07b10e61c4aad90a5c67fd7cb958c96791af53dc344d6f31e13989c51cbbca61fd49f3c42e0460508e54a1bd80d2874b9812e93c0a00100010011300100203001003100410050e000e0110061007100810090400020005000100140014010a01100a0501100b02010a021402100c0502100d100e09000e0309011403101402020101100f01020e02101010110902080010120801050301030e040e0510131015101609030904000000010c008628bbe84e417ab0ef0f76f7375efb4aacd809971584c6c4687e0100000000001508491b336f021b6748626ae9880e0038d4c8bd0cdedd2313000000000000000000000000ac310000ea56f935956cc6f1145f86f9b9acbd49d2d52d6ce40ef2101a2c4b49d3a3a89300fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed7336de5b980ba71958e505a2ec795f329366f1bbb9e453810bff02a503aa9bc1d8434dba35adcb1975edded693b6e457536191a2c75849f3e4120fc22384d2edb0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "00000000000086c71f8dea6f40bc12ae50839b354e06b3db204b56c5e96fda36", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 2, 16, + }, + { + "000000000000a7f3baa260d04507d75d6b551337ec361c8884fd0c8a50ea9d4f", + "10fdb303fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d3000000000000000da47626a4cf73c194e28f17df5786adbd0be34a32ebd3aa8e9ce6ade24f2a2fcb1faf4072aa20100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000697c99899fcf66348b47c08efd26b8bfbc190990472bfa54bdb18e0a00000000000000104d05eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148389252f30400000000002d04000a000a010d000a020a030a040a05080008010a060a070a080a090e000e0104010a0a0a0b04020e020a0c0a0d0a0e0300080303010a0f08020a100a11030202000a1202010e03080408050a130a140a150a16030303040600818d0b1191c59f25d26b59e20039726a6ff5e2762393e49e52da010000000000fbfb481bcc6e021be647626ae3880e00972bb6dfd162db231300000000000000000000000006600000ee1339af09871c29cb40f5d9e4bc942603e333ebd67ed48ae2235d95bf3a0f6400fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabb7564e67ed20e1c3a43985da9a4d2b916e38501cf0feec020c4d028b3fc356ac6d65ae054b70152190502d55a7a680f642a2bf49232ee9ae26807e9c7f7ef3e0286156ffe85dd90128090f4d747f8ee51f5b1eb8d32c1742e636802135e7330394b90bb0d306f9dde577dbdc66ea21a4444c8ecced34d21bce7b3d1ec643fd9db0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000001a22a07f4fab1fca2f224de6acee9a83abd2ea334bed0db6a78f5", + "54fa2b47900919bcbfb826fd8ec0478b3466cf9f", + "76a9149fcf66348b47c08efd26b8bfbc190990472bfa5488ac", + 0, 0, 16, + }, + { + "000000000000b35ac4a9cfc6a26ed8e9ef22e33144febce3cfa8bbb665c9661c", + "10fd7103fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000007047626a4cf73c19b430f902e92f4778f5fb37fa1b9ca5e97079b012329ccfd382f3a732603d0100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f9802000095f93df041e4d6d8971a735946494cdbc5e8602c5209b98e4f428e0a000000008f020010bbb1ea07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d61483800fff20400000000001c0100010104000102010301040105010601070108010905000501010a010b0502010c010d010e010f011001110112050301130114011501163270d620089759ca300786b6a3305e02f584e1b96f89b03c4c4b020000000000941f481b7367021b7f47626ada880e00ac4600c79bb0d723130000000000000000020000003e190000daa9a23408e4761fbb9f052c4f4354d07e3396232857e76738969ccfe1e1cc7e00fd2201057d485f717bb395f1338e505c9a394ca40aaa2a300628daf9af2069b92822ee9656008b717e4fc78bf52f4f0714f2ba1490a30b43ecff9e2b4c0f65fd01abf4760a3307ccfac6e1031df226c9240f9f25fef6a47d818e98f96e996f575405a22187fa9e1a3d026d4386a3650333ed735eda01e845d8f71dcb8f717a4b63e8b1e4fb71aa06e27f10902e6e6b3cf1de5268057ec8f79aead32e5eae58be08e68465b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000013d6032a7f382d3cf9c3212b07970e9a59c1bfa37fbf578472fe9", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 0, 16, + }, + { + "000000000000b93e57320d0e9b7c957222a7ac927d601dccc75ba357de4b9dfc", + "10fdf903fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000008e48626a4cf73c19000f4b85817c6b71bf15b3cbabfd74ad53a2df35650bde3c431dd5211b180100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f9802000093a1017941e4d6d8971a735946494cdbc5e8602c5209b98e731d8f0a000000008f0200101656eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148385ba3f3040000000000400e001400140117001402070014031404140512001201140614071408140903000800060009000500180018010e01140a0901140b06010e021802140c0902140d140e0d0012030d011803141406020501140f05021202141014110d020c0014120c0109030503120412051413010001011415030114160d030d04040004011000dbca3e1863fb8d791cb01f150e693cea0612129d3f449f849fb6010000000000fcc9481b226d021b9748626aed880e004157cbbe1e82df23130000000000000000090000000a230000ae6f4fc60e1cd855db7882b6e5a97e51b3fe90f35493f7b2faa91d0994bf569500fd22010729945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed2e8b66a79af1345b63fc236e5a3d883fe1c73bc00971aa15777315838f62b6c97904a14c684c51ce45113fbff59355d6c68b8b3f2afefd40d9f693df7952afd440d9eaa4f9d0b4914062285f8762e16bd8b74ef35c2e22bde22d26d3a735c314b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000001181b21d51d433cde0b6535dfa253ad74fdabcbb315bf716b7c81", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 0, 16, + }, + { + "000000000000d20e6b13b7965d6bf6492a0b680a81e4e07e3339c47583f888d6", + "10fd0504fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000009d47626a4cf73c1992231e8c2b48d24a14114c51e7a78740f777877c211a5a16d01773c34bab0000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000f9a5336c9fcf66348b47c08efd26b8bfbc190990472bfa545ea88e0a000000000000001046feea07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148388b4bf304000000000329945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078ae116042017f33e0504be69de26ab80fe105e4cac6e508bf712305b5bbad8b1d8e7c864ae7537cd7832ed37dd3936d1d1d29cda98f1cbfd8d87368f13a07ef6a6226000006000601090006020603060406050400040106060607060806090a000a010001060a060b00020a02060c060d060e060f040206100611061204030a030404040506130614061506160200789b23d4e75fa2120da9995cb4b652e76cbf263b8df5f09d0ca601000000000068b8481b8c6c021b9f47626adf880e008468b3346ebfd923130000000000000000000000004ed70000e864d7a676faae8469fddf833092c0cd06d79a5ec23115090315bcfb7f48687600fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabb7564e67ed20e1c3a43985da9a4d2b916e38501cf0feec020c4d028b3fc356ac6d65ae054b70152190502d55a7a680f642a2bf49232ee9ae26807e9c7f7ef3e03227431636159ce4b8b37682aa972ede48c80e76a003501e5a55662c0c5cf6976155d0deaf19d2dc9d85f16a2e36e136f253dde74d58332858711fe5798f1b3ab0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000000ab4bc37317d0165a1a217c8777f74087a7e7514c11144ad2482b", + "54fa2b47900919bcbfb826fd8ec0478b3466cf9f", + "76a9149fcf66348b47c08efd26b8bfbc190990472bfa5488ac", + 0, 3, 16, + }, + { + "000000000000dc8ed66532e68285d900ebd604f23db9872756cdbea0e4935fd7", + "10fd5d03fe000000203409483e824d2bf2b03fdb0b39954e911967e57b592114e73600000000000000f248626a63c24319d26b483d2eb15f725319eefd189b5e54f7c11af5ff5a1f1a2bee131320770100000000001203bb4b260d2f5032506f6f6c2d444153482faf0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000cccc583e41e4d6d8971a735946494cdbc5e8602c5209b98eb99c8d0a000000008f0200108a35ea07000000000203213661bbb2f70200000000225874463535637a4e59686f797a33344a34556f69356d506d483855536b313251476bcf82f2040000000000120300050002000301030202010501020205020203020402050206020702080303020903045c093f2ee122cafc0bdc708ba570c9ad0d27f481c9d116c33bee010000000000feac441b084a021bff48626af4880e006fcf2184e87de22313000000000000000002000000944100002da61a527208de389b714d5bd5acc26c49f8d44e15f66bfbe00c5f3429edf45900fd2201056f4dcd59bc468783efc6dfba29f4f784077583511ac1c46b5ffadc207e6c1f305c0d8a97dbf1b7fa6b6dd2c534a805a7f280ad8b200bd4bdd26431a2b5f67454b7d7f8a8c227a3f96aa20a1f99e7fe52f11f677d16484490fdb2dad07e88520a43d2dfbdf3bd4ae8450b5c437ad1e3451b0f464a137e42ad90e63233316e1c16ecc7b88003dc0f1a00b4048e68177bd77afd477de6ae46cba365d79db3cdb04eb0af0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000", + "00000000000177201313ee2b1a1f5afff51ac1f7545e9b18fdee1953725fb12e", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 0, 16, + }, + { + "000000000001181b21d51d433cde0b6535dfa253ad74fdabcbb315bf716b7c81", + "10fd3904fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000008e48626a4cf73c19c88558d715fd5d7ffb16aa5db47a7c79f653b8362a0c53e324896590d40d0000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000f5e1567b41e4d6d8971a735946494cdbc5e8602c5209b98e731d8f0a000000008f0200101656eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148385ba3f30400000000021993da7d330178d83b2324c11b653f812088381232bde874fd39ed28c3bc72fe2a65646be0981de408b509d601a02814faa75b2713c0a6e87472c3c958c0029c400d001300130116001302060013031304130511001101130613071308130902000700050008000400170017010d01130a0801130b05010d021702130c0802130d130e0c0011030c011703131405020401130f04021102131013110c020b0013120b0108030403110411051313000000011315020113160c030c04030003010f000daac6c74547503d38fe9cb75b9093b988a9df19bf0556a8cf5a0100000000000edc481bbc6d021b9248626aec880e00807d36129c18df2313000000000000000001000000751500003bbf218b6e8b6a8545e01867f1402ad1f2d593f0b4ff489e73e97c71317ed43000fd22010729945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed2e8b66a79af1345b63fc236e5a3d883fe1c73bc00971aa15777315838f62b6c97904a14c684c51ce45113fbff59355d6c68b8b3f2afefd40d9f693df7952afd440d9eaa4f9d0b4914062285f8762e16bd8b74ef35c2e22bde22d26d3a735c314b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000000dd490658924e3530c2a36b853f6797c7ab45daa16fb7f5dfd15", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 2, 16, + }, + { + "0000000000012b10de7076b72edc7f093990848ba6f76ddbf3ecfca1a7cbab5d", + "10fd0303fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000003447626a4cf73c19e667cc79d9da971be84c50ca2d63123c3b90ca5d635828f87ffa79de6d990100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f9802000081a8171941e4d6d8971a735946494cdbc5e8602c5209b98ed5418d0a00000000900200105ff1e907000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838a43ef20400000000000501000200020102020203aa4a42b9de0b6a1cd1446e5de026bcfdd52e2a384285fb0ca06c0200000000001fb8471b0164021b4147626ad7880e005918fa1c926ed6231300000000000000000000000091030000f6f7f5ce78d9d372ff2e6b88aeaa3dccfd6d486053f372e3abbea8d2e6fd8b9100fd220103de7fbf5d8d63b00781d9036aee23437a1b62dfade774383483df45ced333d89f98ffa4539287179abb72ff9c59a926119d1333dcbcbd7ca0a6dbd5655be57bd294497b1495ce793d7d067a69c43989521f3773e75f8c56c9d287a4467af9782ab0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000001996dde79fa7ff82858635dca903b3c12632dca504ce81b97dad9", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 0, 16, + }, + { + "0000000000013d6032a7f382d3cf9c3212b07970e9a59c1bfa37fbf578472fe9", + "10fd5106fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000007047626a4cf73c19f23166e4ca5ff00a8e751eccd1840e959dce26b2dc98598b79e84873ce7a0100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000c14bcba441e4d6d8971a735946494cdbc5e8602c5209b98e4f428e0a0000000090020010bbb1ea07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d61483800fff20400000000177d485f717bb395f1338e505c9a394ca40aaa2a300628daf9af2069b92822ee9691fa468663eab7a7deae40070729d785d8d3742f85a06be5305d07ced5ceb0ba0543e43886d5e0e077f982a044591e3caae5e0d269786fd44c80ca38b54617c1cf2f51728f3a51452b73743ed78756a896d36f45c5373d0a103bf3e776c7b9fcacb6c630acea5afa839df31b7de5dab71aff832ae77d5d41fae7e38d1c857d4556ad591cb334054f8e5ad5e567d6e28eebfdd7400b18ca81762359774fcbb20c924a90e8eea668c7e6f6e1cf14b3c3ea2f183beb0eef427aac8998a494f45dbca48e42db8b849f9173ad1fd3c090af48ecba38f9e93421f3b1fd1aecca2d93491542b580b13767ac601d33b594812fe703b6014fe30d3d67b16a6ff6e1d0f1da5bfe82240b96a0c0196a575760d4c8d7e50a0817d0f1acf20529f165603ebf7e3454656c67183205774c9c3c561cc64a42b71c0b37f36a78cadd552736b39eec38688734580112cbb81f29cef11fe1fe027dbd5ca8f42aca7583105fd939e7a98e852bddbe357f82f7947e9d46451dedbdbd6daa66d8faab9074dde257f6a4a58f9e2be47c9e4e0370b9b1aa43963dfc427e863668031d168cc011421e73f00a8e5ba4bb7417787e66a061172a17204454ffa0943b1176ae2e23a544db8ab33917f1e2e9d81ba2f7c4f0ed2e7abb4b50b6b38ca83c63fe82ed30c0c129e20eab91596ee920275fc59602fd532a792c8333153b2905a7d1376bfebcceeb62d8bcde3dfe8c912121f9e597e3add97734b2b6b797ab484bada8707c86a0cf675c805bb6624d9010f154bad86fc5136f82de118b6de864bc0ac793c3fedc64e2b6fe134aa9ff642cec6fe3a03b0723e6f0715be6da2368fef083ed51eee61edb44db2a093fbf2e2325804b816d60f7e702b6c3ba781416b759c8bc221b257b25ac9f2b3d49a02f03d67755556ac66927a4f4b7679e8741fb6ef005483407112ae07e40d5468b94b4221da94429c97ebc996675970225da7a079cc38b0a45f030a6f81c0000000103000002000300040005000600070008000904000401000a000b0402000c000d000e000f00100011001204030013001400150016317952056443dbe3efd05cc73a6000940ed707375084725acc52000000000000e62c471b5d5f021b6947626ad9880e00d5b9c2a91f46d72313000000000000000000000000bb260000f978b071d180bd40885bc5b8e610356f0445ac592d68d820a8e1729659a443ab00fd2201057d485f717bb395f1338e505c9a394ca40aaa2a300628daf9af2069b92822ee9656008b717e4fc78bf52f4f0714f2ba1490a30b43ecff9e2b4c0f65fd01abf4760a3307ccfac6e1031df226c9240f9f25fef6a47d818e98f96e996f575405a22187fa9e1a3d026d4386a3650333ed735eda01e845d8f71dcb8f717a4b63e8b1e4fb71aa06e27f10902e6e6b3cf1de5268057ec8f79aead32e5eae58be08e68465b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000017ace7348e8798b5998dcb226ce9d950e84d1cc1e758e0af05fca", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 23, 16, + }, + { + "0000000000015a1b5c749548a8333d31ddd54f4f4b68b1ae84d8640c8a3703b1", + "10fddf03fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000000748626a4cf73c196483dbed2c568bed7dba63b3b368941506ccbcb98a02f4e98c67394b66b40100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000926a498341e4d6d8971a735946494cdbc5e8602c5209b98ef4e58e0a000000008f020010772ceb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838bc79f304000000000103e84ad17d699eb1f7ae9c8d730ee7d6e916508e4b6f4753359f3cd929090c9b3307000d000d0110000d0200000d030d040d050b000b010d060d070d080d09010002001100110107010d0a02010d0b070211020d0c02020d0d0d0e06000b0306010d0f0b020d100d11060205000d120501020311030b040b050d130d140d150d16060306040900243b02021d14bfddb13bac6abbfcf004701fbe554b53d20e7d2f0100000000008e73481b406a021b0848626ae6880e00763afadbfd9fdc231300000000000000000c0000002d14000049460e41d98263b08a2e65b49897c61bc5758e82044a6d869f92edd98237290600fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed6bfda0248cc5d865277d402c12a50933479dc595e10a42dd99405ce417ba2edeef32aa3d97d67f5c6deaeb8b5314d775383a6729be213225918200f86a97605ab0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000001b4664b39678ce9f4028ab9bccc06159468b3b363ba7ded8b562c", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 1, 16, + }, + { + "000000000001749f44e4e5afff0f62b4707067a3582db1ced78f36dcf7517e25", + "10fd0704fe000000203409483e824d2bf2b03fdb0b39954e911967e57b592114e736000000000000000149626a63c243195e309cccd75f93e4a0becd562787b93df204d6eb00d98582e63265d68edc0000000000001203bb4b260d2f5032506f6f6c2d444153482faf0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000a01249439fcf66348b47c08efd26b8bfbc190990472bfa54afa48d0a0000000000000010833bea07000000000203213661bbb2f70200000000225874463535637a4e59686f797a33344a34556f69356d506d483855536b313251476bc888f20400000000053da8de860fdf19e084d70c773dcd44450663ea683117026c1f97136bfd120e26d7f1c869bd407b8d2548b745190ee2437aa45d50d497fccd0ea1288605ec06f7bfd5f345f04083a4ec5701cf85d742fb73802d60a6052607d738f45da3916ea1d560d59a8a8bb732b1dbdbee932444c7d0f1eedb0a02abfb604cb222c31de3473411bb5ec4cdab36087d55d68e02d755ea930e9c7d22e304267fbb261e776eb9170400060003000401040203010601030206020303030403050306030703080000040300010002030900030404000447c320afd9f74d22e58859c6823fb76b781c8ba994b70c25ed2e0100000000001994441b3449021b0e49626af5880e00e8bd3590e5ede223130000000000000000000000003c350100718fe7f17b458fe2898825b8c2bf4db9758e4bf215dce9d4b1bf9be15622914f00fd2201056f4dcd59bc468783efc6dfba29f4f784077583511ac1c46b5ffadc207e6c1f305c0d8a97dbf1b7fa6b6dd2c534a805a7f280ad8b200bd4bdd26431a2b5f67454b7d7f8a8c227a3f96aa20a1f99e7fe52f11f677d16484490fdb2dad07e88520a43d2dfbdf3bd4ae8450b5c437ad1e3451b0f464a137e42ad90e63233316e1c16c44100d48884d660c5c9f655b8549c0ae348d48cd12c9572297e4e8e0ca04882b0af0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000", + "000000000000dc8ed66532e68285d900ebd604f23db9872756cdbea0e4935fd7", + "54fa2b47900919bcbfb826fd8ec0478b3466cf9f", + "76a9149fcf66348b47c08efd26b8bfbc190990472bfa5488ac", + 0, 5, 16, + }, + { + "00000000000177201313ee2b1a1f5afff51ac1f7545e9b18fdee1953725fb12e", + "10fd5d03fe000000203409483e824d2bf2b03fdb0b39954e911967e57b592114e73600000000000000f248626a63c24319ec17ff95d8149bb2829991f7b7e70a3b7abe684c9f5b064d3fc978888ec80100000000001203bb4b260d2f5032506f6f6c2d444153482faf0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000ec62f29041e4d6d8971a735946494cdbc5e8602c5209b98eb99c8d0a00000000900200108a35ea07000000000203213661bbb2f70200000000225874463535637a4e59686f797a33344a34556f69356d506d483855536b313251476bcf82f2040000000000120200040001000201020201010401010204020103010401050106010701080203010902043d1988d918ed0cc2717bcd39e4d749636f38704d600e9b7b4d9e000000000000d390451ba051021bf648626af3880e005c043dfb130ee22313000000000000000002000000382d0000ed8bf6532bea7c1930742ddb6d28fb9c858cac5b905ce264d929a408997933c100fd2201056f4dcd59bc468783efc6dfba29f4f784077583511ac1c46b5ffadc207e6c1f305c0d8a97dbf1b7fa6b6dd2c534a805a7f280ad8b200bd4bdd26431a2b5f67454b7d7f8a8c227a3f96aa20a1f99e7fe52f11f677d16484490fdb2dad07e88520a43d2dfbdf3bd4ae8450b5c437ad1e3451b0f464a137e42ad90e63233316e1c16ecc7b88003dc0f1a00b4048e68177bd77afd477de6ae46cba365d79db3cdb04eb0af0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000", + "000000000001c88e8878c93f4d065b9f4c68be7a3b0ae7b7f7919982b29b14d8", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 0, 16, + }, + { + "0000000000017ace7348e8798b5998dcb226ce9d950e84d1cc1e758e0af05fca", + "10fd0303fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000003447626a4cf73c196264dc135dabcba7a1fcecf3db6df7a68b849039097fdc2eb77670de102b0100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f980200009f63864841e4d6d8971a735946494cdbc5e8602c5209b98ed5418d0a000000008f0200105ff1e907000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838a43ef20400000000000502000300030103020303e4fa5dbda4355a4e8cef7803a37d0addd1025882d42eee78f9e9000000000000ab57471bc960021b4247626ad8880e0039d34ba138dad6231300000000000000000a000000a91c01005c3e81fe50b62f1ba23a318d47e5760b2cd4a2714faa29425f890f911d4e46a500fd220103de7fbf5d8d63b00781d9036aee23437a1b62dfade774383483df45ced333d89f98ffa4539287179abb72ff9c59a926119d1333dcbcbd7ca0a6dbd5655be57bd294497b1495ce793d7d067a69c43989521f3773e75f8c56c9d287a4467af9782ab0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000012b10de7076b72edc7f093990848ba6f76ddbf3ecfca1a7cbab5d", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 0, 16, + }, + { + "000000000001996dde79fa7ff82858635dca903b3c12632dca504ce81b97dad9", + "10fd2303fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000003447626a4cf73c191407bfbe0f087b63ee1838206d9f5a5f5341fcc0684fb7e5174d8e32cd7f0000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000873b2c8241e4d6d8971a735946494cdbc5e8602c5209b98ed5418d0a000000008f0200105ff1e907000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838a43ef2040000000001de7fbf5d8d63b00781d9036aee23437a1b62dfade774383483df45ced333d89f05000001000101010201039aa3340eb6f397e3ab715d8b14a5bb49b2f192cd5aab4aa99117010000000000d946471b3a60021b3747626ad6880e008f205a897c03d623130000000000000000000000003f390000ca25ab31d7530096f9a39e36c6baa99cc3f01677c711ed6ae3a9dae0bda64c5600fd220103de7fbf5d8d63b00781d9036aee23437a1b62dfade774383483df45ced333d89f98ffa4539287179abb72ff9c59a926119d1333dcbcbd7ca0a6dbd5655be57bd294497b1495ce793d7d067a69c43989521f3773e75f8c56c9d287a4467af9782ab0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000007fcd328e4d17e5b74f68c0fc41535f5a9f6d203818ee637b080f", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 1, 16, + }, + { + "0000000000019b3e535fa9854c250524e5ed2bf123e34ed27a0de12639887f6c", + "10fd3d04fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000009d48626a4cf73c19ec54a9fefc9d4bde57a35bc7cc1d607d92aca72272957c9b0e0d32573eb90000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f980200001865855741e4d6d8971a735946494cdbc5e8602c5209b98e1d288f0a0000000090020010155eeb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148385aabf304000000000287afb0109c07685b113132ef4f2978fcdcc9a646fe711e376c71d55f10533aa75efc07676df2611f9b1e755655fc15cf2a71a179de7f08ede3ec8231fda634c8420f00150015011800150208001503150415051300130115061507150815090400090007000a000600150b0000190019010f01150a0a0107010f021902150c0a02150d150e00010e0013030e011903151407020601150f06021302151015110e020d0015120d010a030603130413051513020002011515040115160e030e04050005011100920184a583a5d629f372e293b0d82521f0ef6c3d702b54a25b56000000000000d698471bf662021b9f48626aee880e0074a19a1e63eddf231300000000000000000200000039370000dc91b21647da753f0dce6a2f989ef7e61c893b3e664762bfa73d949979e07d0300fd22010729945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed86d75a4eb0818bd5a45e35d1e040bf4654698963727effbd84f6f8004cc76ac09c455aab581d528a4160853b30057c57925076c53ccf7c42d9e73dd8700b41e719e17f8e57179511f07c49c010fdb691331a9ee04f88534ddd81c9e160f18aeeb0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000000b93e57320d0e9b7c957222a7ac927d601dccc75ba357de4b9dfc", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 2, 16, + }, + { + "000000000001a22a07f4fab1fca2f224de6acee9a83abd2ea334bed0db6a78f5", + "10fdb303fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d3000000000000000ca47626a4cf73c19e03efb9cdc792bb2defdc7e5ce8facdfb9cd2307a05caa12b769bb38444e0200000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f9802000072c067c541e4d6d8971a735946494cdbc5e8602c5209b98ebdb18e0a00000000900200104d05eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148389252f30400000000002d0300090009010c0009020903090409050700070109060907090809090d000d010301090a090b03020d02090c090d090e020007030201090f07020910091102020100091201010d030704070509130914091509160203020405000faf12e9f24fb0640035cdd534d225d58394e991c4170b008013000000000000c5a3491b6474021bd447626ae2880e00306ebb5e97f9da2313000000000000000000000000ac5f0000637dd57782e0b48d925ce380d9b268b61ed6c7102fbb9d9bd6c8bc183da4ac3800fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabb7564e67ed20e1c3a43985da9a4d2b916e38501cf0feec020c4d028b3fc356ac6d65ae054b70152190502d55a7a680f642a2bf49232ee9ae26807e9c7f7ef3e0286156ffe85dd90128090f4d747f8ee51f5b1eb8d32c1742e636802135e7330394b90bb0d306f9dde577dbdc66ea21a4444c8ecced34d21bce7b3d1ec643fd9db0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000024e4438bb69b712aa5ca00723cdb9dfac8fcee5c7fddeb22b79dc", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 0, 16, + }, + { + "000000000001b4664b39678ce9f4028ab9bccc06159468b3b363ba7ded8b562c", + "10fddd03fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d3000000000000000f847626a4cf73c193c387c03d8d0b761b7269132b4a1bfbc4c9ed0f87af4c3695aa7f6c5f0300200000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f980200000bfac6a341e4d6d8971a735946494cdbc5e8602c5209b98ef4e58e0a0000000090020010772ceb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838bc79f3040000000001f437ee6cacbf6ff7137033899568c0b66e8ce4a3a581a25c50b728b965792b2b3206000c000c010f000c020c030c040c050a000a010c060c070c080c09000001001000100106010c0a01010c0b060210020c0c01020c0d0c0e05000a0305010c0f0a020c100c11050204000c120401010310030a040a050c130c140c150c16050305040800e3787ffae834f92ff7e3ff71992be539cf6e9b95c56e433e94d5010000000000c992481b4a6b021bff47626ae5880e00f54bf93cfd35dc23130000000000000000010000000d2600002bfe23345a6b6d18ea90be4af9162514fce93aca99521b0cc7381a1ec616241100fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabb7564e67ed20e1c3a43985da9a4d2b916e38501cf0feec020c4d028b3fc356ac28458a7b1e70af1deb753c447109d4907ee15ec3cd7480a8bc56b8eb61fb1f02d59ac8ceb008d6624b30a218c59bccbebad43f98ec99fcf7006fb25014fa8c337e410e74ada46ffec301aa666d8d8b16a99fca8fa51160cb1f8a5f748d46c983b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "00000000000230f0c5f6a75a69c3f47af8d09e4cbcbfa1b4329126b761b7d0d8", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 1, 16, + }, + { + "000000000001c88e8878c93f4d065b9f4c68be7a3b0ae7b7f7919982b29b14d8", + "10fd9d04fe000000203409483e824d2bf2b03fdb0b39954e911967e57b592114e73600000000000000f248626a63c24319424aefdb59c1d027c7fce0ab3e6ea3317cf74d93d801bc1ec27accb41b090000000000001203bb4b260d2f5032506f6f6c2d444153482faf0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f329802000041ca751041e4d6d8971a735946494cdbc5e8602c5209b98eb99c8d0a000000008f0200108a35ea07000000000203213661bbb2f70200000000225874463535637a4e59686f797a33344a34556f69356d506d483855536b313251476bcf82f204000000000a9f81b05b9f9cf087ce2f91775164561093485fd53dec335e5e918108919ada9d2ee9e45b5b0745277b8ce548b65cca6fb8a3bd564644d85ba63be9b2bb2cf5e0e660fb8ddceb0b2612920f8e888de8dc4a5e5d02b1c7bb5cddcc8a224c7f8ad30898302c3651123b98abe1cc48b5b5a1083a2812fa133c0b10af9473567031ee799e3d089fa8fda19661eacf27463ebba945fc8846821d6f3bc0dbf6648d1ce1f21f0e070cd5844507ab616e8ce2e2bdb4e8e0cca1b22a831f45375b4e90440e30d0c4b1ba9d5bd8d6cb3e651b7efdfcf425a27164f7d0c85f5ba5316fe84ef9b09c77a521f5d962c340ff709ee7a1bcbc8b95d2426a44732251aafbdf4d7d5717c57e8556038b577652adbdc7b49aefa1f343e91f6d559823b422e8976c764890bf964efae3d1dfb4ffc096c104172ff6d0836fb7f46a66f2283c965a36283d120100030000000101010200010301000203020003000400050006000700080103000901046d9b5ef969752aedf0e26a9a20759c85ccfe0d3df0b81e8aa0af01000000000072d7461b835c021bf548626af2880e006d14ebaaad9fe1231300000000000000000100000077000000080d574a43ebfa025a08dfa2844125bde9563382b7304735cf51084083e69dd500fd2201056f4dcd59bc468783efc6dfba29f4f784077583511ac1c46b5ffadc207e6c1f305c0d8a97dbf1b7fa6b6dd2c534a805a7f280ad8b200bd4bdd26431a2b5f67454b7d7f8a8c227a3f96aa20a1f99e7fe52f11f677d16484490fdb2dad07e88520a43d2dfbdf3bd4ae8450b5c437ad1e3451b0f464a137e42ad90e63233316e1c16ecc7b88003dc0f1a00b4048e68177bd77afd477de6ae46cba365d79db3cdb04eb0af0300bb4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e5800b334d98f6fee34ca98754367ca53b997c86330e223fb071f15b64a2ccd6ef81c26b454cb48d42f837f4d870e6751adf70b608178380df89dbe753238237df627a65438d5118cba34cac716ff93bb015c0f22f92191481e4d6f06e559b14489534dcb3f3298020000", + "000000000000091bb4cc7ac21ebc01d8934df77c31a36e3eabe0fcc727d0c159", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 655, 10, 16, + }, + { + "00000000000202c5ba0a7dc994336b3c22c3cc0b9451d28d96eaeca521e72cd9", + "10fd2504fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d30000000000000001648626a4cf73c197814c670b103378a0c64d884aeb1684b4f4fd5dd313d33a84895745c1b5a0100000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000b07b4da141e4d6d8971a735946494cdbc5e8602c5209b98e92f88e0a00000000900200106d3aeb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838b287f3040000000003148e084506cd8bb7b7a3c8b96a092df073889b40001e4337265048aa0dbf553b7b39f3217fe3b6e29a2a5967e2e05076b34e22fc0c78c329392b7370cf78386bcb2158054d017d0f76146fdde8924c4d2921787790a46b0a754ee93d9e69e3133608000e000e0111000e0201000e030e040e050c000c010e060e070e080e090200000003001200120108010e0a03010e0b0001080212020e0c03020e0d0e0e07000c0307010e0f0c020e100e11070206000e120601030312030e1400020c040c050e130e150e16070307040a00b931f985859a9f69bd371022415832a03cbcea39e3844de0f0a00000000000003737481b3d68021b1948626ae7880e00f3297b11570add2313000000000000000001000000fbb90000fed476ed21fb5483948869b8f97d537a845f2c87a654f747d45bd7a47100cc9000fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabc8826dd1baee0b3f819030bbc661313edbf3fb01f98542fe1a5b237908857aa36447f5f3859c71a5da7c1862d13c7932ea48550c570be7e941a1b93e52b0feed3668f3a91b0bad7e071779a5839295979f0cd1219f38c00116ffe32a4ccb607d6565b194f655f14ded3079abd3792e7e34bdac91e209f951fc6985493b02fe47b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000015a1b5c749548a8333d31ddd54f4f4b68b1ae84d8640c8a3703b1", + "8eb909522c60e8c5db4c494659731a97d8d6e441", + "76a91441e4d6d8971a735946494cdbc5e8602c5209b98e88ac", + 656, 3, 16, + }, + { + "00000000000230f0c5f6a75a69c3f47af8d09e4cbcbfa1b4329126b761b7d0d8", + "10fd3b04fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d3000000000000000e947626a4cf73c19f45e7e174f9dea508a0cfd84881c36ec3713556b5dd70745d060a2baf3a70000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f980200004a76581a9fcf66348b47c08efd26b8bfbc190990472bfa546cd28e0a0000000000000010d11deb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d614838166bf30400000000042798ad7f36fe290394e23e655694b46b9fc51dbd4c3af4c3d6bdb0f3c45d7c0136c28b4b50a5c1c77bb6c2624a613576185dfce35304c42e3bbe27a1ed2bd09f611b597362891cee34147aba73842db65c0d25b7031cd3944dfe36e35031d33734dbbe5e91196dd1f03da99e74e88fc16e2aee3992f6ab5606b1cb3e0a05dc483105000b000b010e000b020b030b040b05090009010b060b070b080b0900000f000f0105010b0a00010b0b05020f020b0c00020b0d0b0e0400090304010b0f09020b100b11040203000b12030100030f03090409050b130b140b150b160403040407000eb48d322112770102d30cde681a6d472d7e154cd7be7ba11afc01000000000057e7481b1c6e021bf747626ae4880e003f4bd2252accdb2313000000000000000000000000f82800002d0a95029052eb36cd0f61ddbcbe69c740d7fe9bb84265934f7c9279bbc486c200fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabb7564e67ed20e1c3a43985da9a4d2b916e38501cf0feec020c4d028b3fc356acf327e850f86959e64f8fe2abc0878869c116d2b05ffc81243ef963fcea175713db3114a5a5d21fd39fec107d2535a0b8444cba1b6d8644c590092517acee7d745979e7896d4d872415c33953e33603f20308b5bef0874c03649b9833f0bd75d6b0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "000000000000a7f3baa260d04507d75d6b551337ec361c8884fd0c8a50ea9d4f", + "54fa2b47900919bcbfb826fd8ec0478b3466cf9f", + "76a9149fcf66348b47c08efd26b8bfbc190990472bfa5488ac", + 0, 4, 16, + }, + { + "0000000000024e4438bb69b712aa5ca00723cdb9dfac8fcee5c7fddeb22b79dc", + "10fdf303fe00000020a6dfac401771aaa2aa567ac7fdba4156313c63da84be250d3000000000000000cb47626a4cf73c194c5dfd0a52b776e8c20bf64774663d190fcda2015c58d93a2415c6fa62810000000000001203ba4b260d2f5032506f6f6c2d444153482faf0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f9802000031f3bc399fcf66348b47c08efd26b8bfbc190990472bfa54bdb18e0a00000000000000104d05eb07000000000203213661bbb2f7020000000022586f753136474e474c4c6858446d5a3255367757574d7631586b683276396d6148389252f3040000000002bd1deef1ba4fea6ef41fb84fba8535528dc269568d3a31f9b1eec30a1f42d99398d6c3af6985acb7d086b1f7314829dc2932f1c615e57688451eeb896c4fcb952d0200080008010b0008020803080408050600060108060807080808090c000c010201080a080b02020c02080c080d080e010006030101080f06020810081101020000081200010c03060406050813081408150816010301040400ad07b5c2f9616a34e2dc26329020428b157474a0c23d6891ec01010000000000e796491bf673021bcf47626ae1880e00d16038aa4c91da2313000000000000000000000000e71c00000a6cecb68da5d02546e7b9e33291771500e7d59f94b2b72c21015d812854581f00fd22010629945696be9b0818d866db3c46b7db703497c5a7f9211e8a20ffbe3c8cf078aef742496bf45f786d4c776cfc4ab8afe76958ff46b4735c95bd5250bce8badeabb7564e67ed20e1c3a43985da9a4d2b916e38501cf0feec020c4d028b3fc356ac6d65ae054b70152190502d55a7a680f642a2bf49232ee9ae26807e9c7f7ef3e0286156ffe85dd90128090f4d747f8ee51f5b1eb8d32c1742e636802135e7330394b90bb0d306f9dde577dbdc66ea21a4444c8ecced34d21bce7b3d1ec643fd9db0af0300ba4b2600df144a6e98a76eb01a33e147a2e72fd0a76eb5d764cd574dba7d44243c7e5f2cfd5db115afdfafbc082d62ae4e29ea389db6b46eaa3fe84e4601e0ce7f354e580084c8f23ed1d08f23797de278f91fc430bcc53aa59c172b9060c4c5a96d1528327a3dd315fb6a40fd006608b8254948611535878c19db5dec0423cfd4d6b85a65362e952a331d29ca806a2af93abd05feefea03a3fa6d9f7e702c380c093e1fdc9218482f98020000", + "0000000000008162fac615243ad9585c01a2cd0f193d667447f60bc2e876b752", + "54fa2b47900919bcbfb826fd8ec0478b3466cf9f", + "76a9149fcf66348b47c08efd26b8bfbc190990472bfa5488ac", + 0, 2, 16, + }, + }; + return v; +} + +} // namespace dash_oracle_corpus diff --git a/test/test_dash_oracle_byte_parity.cpp b/test/test_dash_oracle_byte_parity.cpp new file mode 100644 index 000000000..fab38a674 --- /dev/null +++ b/test/test_dash_oracle_byte_parity.cpp @@ -0,0 +1,136 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// ═══════════════════════════════════════════════════════════════════════════ +// DASH share-v16 BYTE-PARITY KAT — real captured-corpus vectors (T1c gate). +// +// The 2026-07-21 join-lane audit flagged that test_dash_conformance.cpp only +// exercises SYNTHETIC / out-of-band merkle vectors — there was no byte-parity +// test against a REAL p2pool-dash node. This KAT closes that gap: it pins +// c2pool's DASH v16 share serialization to the CANONICAL fork wire bytes. +// +// Corpus: test/data/dash_oracle_corpus.hpp — 29 distinct shares captured off a +// controlled p2pool-dash node JOINED to the live public sharechain (share-v16 / +// min-proto-1700), each `raw` cross-validated byte-identical across 4 peers. +// +// The invariant proved per vector (the T1c byte-parity gate): +// serialize( load_share( raw ) ) == raw (round-trip byte parity) +// i.e. c2pool parses the canonical wire bytes AND re-emits them byte-for-byte +// — the exact condition for c2pool to relay a share the fork will VERIFY_PASS. +// Plus semantic cross-checks (prev_hash / donation / new_tx_count / pubkey_hash +// -> payout_script) against the fork's independently-parsed SHARE_RECV fields. +// ═══════════════════════════════════════════════════════════════════════════ + +#include + +#include // dash::load_share, dash::ShareType, DashShare +#include // chain::RawShare +#include // PackStream +#include +#include +#include // NetService + +#include "data/dash_oracle_corpus.hpp" + +#include +#include +#include + +namespace { + +std::vector from_hex(const std::string& h) +{ + std::vector out; + out.reserve(h.size() / 2); + auto nib = [](char c) -> int { + if (c >= '0' && c <= '9') return c - '0'; + if (c >= 'a' && c <= 'f') return c - 'a' + 10; + if (c >= 'A' && c <= 'F') return c - 'A' + 10; + return -1; + }; + for (size_t i = 0; i + 1 < h.size(); i += 2) + out.push_back(static_cast((nib(h[i]) << 4) | nib(h[i + 1]))); + return out; +} + +std::string to_hex(const unsigned char* p, size_t n) +{ + static const char* d = "0123456789abcdef"; + std::string s; + s.reserve(n * 2); + for (size_t i = 0; i < n; ++i) { s.push_back(d[p[i] >> 4]); s.push_back(d[p[i] & 0xf]); } + return s; +} + +} // namespace + +// One parametrized test instance per captured canonical share. +class DashOracleByteParity : public ::testing::TestWithParam {}; + +TEST_P(DashOracleByteParity, RoundTripsCanonicalWireBytes) +{ + const auto& v = GetParam(); + + // ── Parse the full wire entry: [VarInt type][VarStr contents] (chain::RawShare). + auto raw_bytes = from_hex(v.raw_hex); + ASSERT_FALSE(raw_bytes.empty()); + + PackStream stream(raw_bytes); + chain::RawShare rshare; + rshare.Unserialize(stream); + + EXPECT_EQ(rshare.type, 16u) << "wire share type must be v16"; + EXPECT_EQ(rshare.type, v.share_version); + + // Canonical inner contents (post length-prefix) — the byte-parity target. + const std::vector canonical_contents = rshare.contents.m_data; + ASSERT_FALSE(canonical_contents.empty()); + + // ── Deserialize contents into a concrete DashShare via the production path. + dash::ShareType share = dash::load_share(rshare, NetService{}); + + // ── Re-serialize through DashFormatter::Write and demand byte identity. + PackStream out; + share.Serialize(out); + const std::string got = to_hex(reinterpret_cast(out.data()), out.size()); + const std::string want = to_hex(canonical_contents.data(), canonical_contents.size()); + + EXPECT_EQ(got, want) + << "share " << v.share_hash << ": re-serialized contents diverge from canonical wire bytes"; + + // ── Semantic cross-checks vs the fork's independently-parsed SHARE_RECV. + share.ACTION({ + if constexpr (std::is_same_v) { + EXPECT_EQ(obj->m_donation, v.donation) + << "share " << v.share_hash << ": donation"; + EXPECT_EQ(obj->m_new_transaction_hashes.size(), v.new_tx_count) + << "share " << v.share_hash << ": new_tx_count"; + // prev_hash: uint256 GetHex() is display (reversed) order == oracle log. + EXPECT_EQ(obj->m_prev_hash.GetHex(), std::string(v.prev_hash)) + << "share " << v.share_hash << ": prev_hash"; + // pubkey_hash: internal bytes go verbatim into the P2PKH scriptPubKey + // (wire order); the oracle logs payout_pubkey_hash in display order. + auto pkh = obj->m_pubkey_hash.GetChars(); + const std::string pkh_wire = to_hex(pkh.data(), pkh.size()); + EXPECT_EQ("76a914" + pkh_wire + "88ac", std::string(v.payout_script)) + << "share " << v.share_hash << ": payout_script"; + EXPECT_EQ(obj->m_pubkey_hash.GetHex(), std::string(v.payout_pubkey_hash)) + << "share " << v.share_hash << ": payout_pubkey_hash (display)"; + } + }); + + share.destroy(); +} + +INSTANTIATE_TEST_SUITE_P( + OracleGateCorpus, + DashOracleByteParity, + ::testing::ValuesIn(dash_oracle_corpus::vectors())); + +// Guard: the corpus must actually be present and non-trivial, so a stripped or +// empty header can never make the gate vacuously pass. +TEST(DashOracleByteParityCorpus, IsPresentAndNonTrivial) +{ + ASSERT_GE(dash_oracle_corpus::vectors().size(), 20u) + << "oracle byte-parity corpus missing or too small"; + for (const auto& v : dash_oracle_corpus::vectors()) + EXPECT_EQ(v.share_version, 16u); +}