From fc877bd89e0be387679d9b8aee8eda5571940117 Mon Sep 17 00:00:00 2001 From: Runchao Han Date: Fri, 30 Aug 2024 14:57:48 +1000 Subject: [PATCH 1/8] init --- contracts/btc-staking/src/contract.rs | 28 ++++++++++++++------------- packages/btcstaking/src/tx_verify.rs | 14 +++++++++----- packages/test-utils/src/lib.rs | 14 +++++++------- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/contracts/btc-staking/src/contract.rs b/contracts/btc-staking/src/contract.rs index 9978752a..6a1ff385 100644 --- a/contracts/btc-staking/src/contract.rs +++ b/contracts/btc-staking/src/contract.rs @@ -277,30 +277,26 @@ fn handle_end_block( pub(crate) mod tests { use super::*; - use hex::ToHex; - + use babylon_apis::btc_staking_api::{ + ActiveBtcDelegation, BtcUndelegationInfo, CovenantAdaptorSignatures, + FinalityProviderDescription, NewFinalityProvider, ProofOfPossessionBtc, + }; + use babylon_apis::finality_api::PubRandCommit; + use babylon_proto::babylon::btcstaking::v1::BtcDelegation; use cosmwasm_std::{ from_json, testing::{message_info, mock_dependencies, mock_env}, Binary, Decimal, }; use cw_controllers::AdminResponse; - - use babylon_apis::btc_staking_api::{ - ActiveBtcDelegation, BtcUndelegationInfo, CovenantAdaptorSignatures, - FinalityProviderDescription, NewFinalityProvider, ProofOfPossessionBtc, - }; - use babylon_apis::finality_api::PubRandCommit; - - use test_utils::{get_btc_delegation_and_params, get_pub_rand_commit}; + use hex::ToHex; + use test_utils::{get_btc_delegation, get_pub_rand_commit}; pub(crate) const CREATOR: &str = "creator"; pub(crate) const INIT_ADMIN: &str = "initial_admin"; const NEW_ADMIN: &str = "new_admin"; - /// Build an active BTC delegation from a BTC delegation - pub(crate) fn get_active_btc_delegation() -> ActiveBtcDelegation { - let (del, _) = get_btc_delegation_and_params(); + fn new_active_btc_delegation(del: BtcDelegation) -> ActiveBtcDelegation { let btc_undelegation = del.btc_undelegation.unwrap(); ActiveBtcDelegation { @@ -347,6 +343,12 @@ pub(crate) mod tests { } } + /// Build an active BTC delegation from a BTC delegation + pub(crate) fn get_active_btc_delegation() -> ActiveBtcDelegation { + let del = get_btc_delegation(); + new_active_btc_delegation(del) + } + // Build a derived active BTC delegation from the base (from testdata) BTC delegation pub(crate) fn get_derived_btc_delegation(del_id: u8, fp_ids: &[u8]) -> ActiveBtcDelegation { assert!( diff --git a/packages/btcstaking/src/tx_verify.rs b/packages/btcstaking/src/tx_verify.rs index 672e38c8..569169b9 100644 --- a/packages/btcstaking/src/tx_verify.rs +++ b/packages/btcstaking/src/tx_verify.rs @@ -204,11 +204,12 @@ mod tests { use bitcoin::consensus::deserialize; use bitcoin::secp256k1::schnorr::Signature; use bitcoin::{Transaction, XOnlyPublicKey}; - use test_utils::get_btc_delegation_and_params; + use test_utils::{get_btc_delegation, get_params}; #[test] fn test_check_transactions() { - let (btc_del, params) = get_btc_delegation_and_params(); + let btc_del = get_btc_delegation(); + let params = get_params(); let staking_tx: Transaction = deserialize(&btc_del.staking_tx).unwrap(); let slashing_tx: Transaction = deserialize(&btc_del.slashing_tx).unwrap(); @@ -239,7 +240,8 @@ mod tests { #[test] fn test_verify_unbonding_tx_schnorr_sig() { - let (btc_del, params) = get_btc_delegation_and_params(); + let btc_del = get_btc_delegation(); + let params = get_params(); let staking_tx: Transaction = deserialize(&btc_del.staking_tx).unwrap(); let funding_out_idx: u32 = 0; @@ -286,7 +288,8 @@ mod tests { #[test] fn test_verify_slashing_tx_adaptor_sig() { - let (btc_del, params) = get_btc_delegation_and_params(); + let btc_del = get_btc_delegation(); + let params = get_params(); let staking_tx: Transaction = deserialize(&btc_del.staking_tx).unwrap(); let slashing_tx: Transaction = deserialize(&btc_del.slashing_tx).unwrap(); @@ -334,7 +337,8 @@ mod tests { #[test] fn test_verify_unbonding_slashing_tx_adaptor_sig() { - let (btc_del, params) = get_btc_delegation_and_params(); + let btc_del = get_btc_delegation(); + let params = get_params(); let btc_undel = btc_del.btc_undelegation.unwrap(); let unbonding_tx: Transaction = deserialize(&btc_undel.unbonding_tx).unwrap(); diff --git a/packages/test-utils/src/lib.rs b/packages/test-utils/src/lib.rs index ffe85017..0f434a7b 100644 --- a/packages/test-utils/src/lib.rs +++ b/packages/test-utils/src/lib.rs @@ -140,16 +140,16 @@ pub fn get_btc_timestamp_and_headers() -> (BtcTimestamp, HashMap (BtcDelegation, BtcStakingParams) { - let btc_del_path = find_testdata_path().join(BTC_DELEGATION_DATA); - let btc_del_data: &[u8] = &fs::read(btc_del_path).unwrap(); - let btc_del = BtcDelegation::decode(btc_del_data).unwrap(); - +pub fn get_params() -> BtcStakingParams { let params_path = find_testdata_path().join(PARAMS_DATA); let params_data: &[u8] = &fs::read(params_path).unwrap(); - let params = BtcStakingParams::decode(params_data).unwrap(); + BtcStakingParams::decode(params_data).unwrap() +} - (btc_del, params) +pub fn get_btc_delegation() -> BtcDelegation { + let btc_del_path = find_testdata_path().join(BTC_DELEGATION_DATA); + let btc_del_data: &[u8] = &fs::read(btc_del_path).unwrap(); + BtcDelegation::decode(btc_del_data).unwrap() } pub fn get_pub_rand_commit() -> MsgCommitPubRandList { From ff2e8cef1b22aa041ddbc5c5353aea0def10a55e Mon Sep 17 00:00:00 2001 From: Runchao Han Date: Fri, 30 Aug 2024 15:43:08 +1000 Subject: [PATCH 2/8] try --- datagen/main.go | 2 +- datagen/utils/btcstaking.go | 66 ++++-- .../test-utils/testdata/btc_light_client.dat | 200 +++++++++--------- .../testdata/btc_light_client_fork.dat | 22 +- .../testdata/btc_light_client_fork_msg.json | 2 +- .../test-utils/testdata/btc_timestamp.dat | Bin 5869 -> 5837 bytes .../testdata/btc_timestamp_header0.dat | Bin 80 -> 80 bytes .../testdata/btc_timestamp_header1.dat | 3 +- .../test-utils/testdata/btcstaking_params.dat | Bin 217 -> 217 bytes packages/test-utils/testdata/raw_ckpt.dat | Bin 102 -> 102 bytes 10 files changed, 159 insertions(+), 136 deletions(-) diff --git a/datagen/main.go b/datagen/main.go index f602e7c0..7fecb7f1 100644 --- a/datagen/main.go +++ b/datagen/main.go @@ -21,7 +21,7 @@ func main() { utils.GenBTCLightClientFork(mainHeadersLength, mainHeaders[forkHeaderHeight-initialHeaderHeight], testDataPath) utils.GenBTCLightClientForkMessages(mainHeadersLength, mainHeaders[forkHeaderHeight-initialHeaderHeight], testDataPath) utils.GenBTCTimestamp(testDataPath) - utils.GenBTCDelegation(testDataPath) + utils.GenBTCDelegationsAndParams(testDataPath) utils.GenEOTSTestData(testDataPath) randListInfo, privKey := utils.GenCommitPubRandListMsg(commitPubRandHeight, commitPubRandAmount, pubRandIndex, testDataPath) utils.GenAddFinalitySig(commitPubRandHeight, pubRandIndex, randListInfo, privKey, testDataPath, 1) diff --git a/datagen/utils/btcstaking.go b/datagen/utils/btcstaking.go index 430559b0..d6d57cdd 100644 --- a/datagen/utils/btcstaking.go +++ b/datagen/utils/btcstaking.go @@ -11,6 +11,7 @@ import ( "github.com/babylonlabs-io/babylon/testutil/datagen" bbn "github.com/babylonlabs-io/babylon/types" "github.com/babylonlabs-io/babylon/x/btcstaking/types" + "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/chaincfg" "github.com/stretchr/testify/require" ) @@ -22,10 +23,44 @@ const ( var net = &chaincfg.RegressionNetParams -func GenBTCDelegation(dir string) { +func GenParams(dir string) ([]*btcec.PrivateKey, uint32) { r := rand.New(rand.NewSource(time.Now().Unix())) t := &testing.T{} + // (3, 5) covenant committee + covenantSKs, covenantPKs, err := datagen.GenRandomBTCKeyPairs(r, 5) + require.NoError(t, err) + covenantQuorum := uint32(3) + + slashingAddress, err := datagen.GenRandomBTCAddress(r, net) + require.NoError(t, err) + + bsParams := &types.Params{ + CovenantPks: bbn.NewBIP340PKsFromBTCPKs(covenantPKs), + CovenantQuorum: covenantQuorum, + SlashingAddress: slashingAddress.EncodeAddress(), + } + + paramsBytes, err := bsParams.Marshal() + require.NoError(t, err) + paramsPath := filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME) + err = os.WriteFile(paramsPath, paramsBytes, 0644) + require.NoError(t, err) + + return covenantSKs, covenantQuorum +} + +func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuorum uint32) { + r := rand.New(rand.NewSource(time.Now().Unix())) + t := &testing.T{} + + // read params + params, err := os.ReadFile(filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME)) + require.NoError(t, err) + bsParams := types.Params{} + err = bsParams.Unmarshal(params) + require.NoError(t, err) + delSK, _, err := datagen.GenRandomBTCKeyPair(r) require.NoError(t, err) @@ -35,29 +70,19 @@ func GenBTCDelegation(dir string) { require.NoError(t, err) fpBTCPKs := bbn.NewBIP340PKsFromBTCPKs(fpPKs) - // (3, 5) covenant committee - covenantSKs, covenantPKs, err := datagen.GenRandomBTCKeyPairs(r, 5) - require.NoError(t, err) - covenantQuorum := uint32(3) - stakingTimeBlocks := uint16(5) stakingValue := int64(2 * 10e8) - slashingAddress, err := datagen.GenRandomBTCAddress(r, net) - require.NoError(t, err) slashingRate := sdkmath.LegacyNewDecWithPrec(int64(datagen.RandomInt(r, 41)+10), 2) unbondingTime := uint16(100) + 1 slashingChangeLockTime := unbondingTime - bsParams := &types.Params{ - CovenantPks: bbn.NewBIP340PKsFromBTCPKs(covenantPKs), - CovenantQuorum: covenantQuorum, - SlashingAddress: slashingAddress.EncodeAddress(), - } - // only the quorum of signers provided the signatures covenantSigners := covenantSKs[:covenantQuorum] + covPKs, err := bbn.NewBTCPKsFromBIP340PKs(bsParams.CovenantPks) + require.NoError(t, err) + // construct the BTC delegation with everything btcDel, err := datagen.GenRandomBTCDelegation( r, @@ -66,9 +91,9 @@ func GenBTCDelegation(dir string) { fpBTCPKs, delSK, covenantSigners, - covenantPKs, + covPKs, covenantQuorum, - slashingAddress.EncodeAddress(), + bsParams.SlashingAddress, 1000, uint64(1000+stakingTimeBlocks), uint64(stakingValue), @@ -82,10 +107,9 @@ func GenBTCDelegation(dir string) { btcDelPath := filepath.Join(dir, BTC_DEL_FILENAME) err = os.WriteFile(btcDelPath, btcDelBytes, 0644) require.NoError(t, err) +} - paramsBytes, err := bsParams.Marshal() - require.NoError(t, err) - paramsPath := filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME) - err = os.WriteFile(paramsPath, paramsBytes, 0644) - require.NoError(t, err) +func GenBTCDelegationsAndParams(dir string) { + covenantSKs, covenantQuorum := GenParams(dir) + GenBTCDelegations(dir, covenantSKs, covenantQuorum) } diff --git a/packages/test-utils/testdata/btc_light_client.dat b/packages/test-utils/testdata/btc_light_client.dat index 66ae1a28..78acd53e 100644 --- a/packages/test-utils/testdata/btc_light_client.dat +++ b/packages/test-utils/testdata/btc_light_client.dat @@ -1,202 +1,202 @@  -04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e681763eec07c14078f4810e444df3a4a8b35a23e75bf14b45ce12f5144f73fe196bc078653ffff7f20636666e6@67df55a27f493341d3e17b8df29e12d43d2d76cc85e51c375c973fa6cd9400ae"18446744073709551617 +04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e6864921b2946c1f942737d56f2f92fbd8a752d27738896186e0ded3e4532c4c5d694078653ffff7f20f2ffffef@790cbcb9070f3c3ce455a88e0470d2aff20521cbb7aae1a04c94d06d9f1341cb"18446744073709551617  -04000000ae0094cda63f975c371ce585cc762d3dd4129ef28d7be1d34133497fa255df67c3b7a8d57fe98869da5cc3b9093beb92a05468def25a50b2353847cc559cebf0d8088653ffff7f20626666e6@5b7032370ca39eb334da861d657f9aca8aff5d2ad0d77c0de9da412a7ba1f78c"18446744073709551619 +04000000cb41139f6dd0944ca0e1aab7cb2105f2afd270048ea855e43c3c0f07b9bc0c79b6a805046a40201d03393f6944d9b99e80b2cdcff8551fb93752f9ac5304c627b5088653ffff7f2001000000@1f69475472b01ac502af44f5ba6eb7f699b2b537b9857515804cc16f262854c1"18446744073709551619  -040000008cf7a17b2a41dae90d7cd7d02a5dff8aca9a7f651d86da34b39ea30c3732705b75d1b9bbfa5116bba91d97bdafcb7a2430f6c6b3a0e310fd32bd53a418380836e90a8653ffff7f2033333333@0dfeaec4eac4852a0ecb09513d71c00eef22a1c2a855aa839c4e429bdab145c8"18446744073709551621 +04000000c15428266fc14c80157585b937b5b299f6b76ebaf544af02c51ab0725447691f0bade6d3ce1f82694e76e4aafa3540f12c3bda7efe530b0b07347bdbef821994e4098653ffff7f2000000010@765b5488dd1b0960bfe0cabf4e8117089b607ddc15d9add2f2120c1185c3184c"18446744073709551621  -04000000c845b1da9b424e9c83aa55a8c2a122ef0ec0713d5109cb0e2a85c4eac4aefe0df4b37eba22e7d9109875b43d9d5b5b4207d07401627046d97edb4ae2d2fb349d690c8653ffff7f20626666e6@3786f5e8fc7c19904de53835cb3a0d6a22a76f466eb3ed354fa322d9b1037cc0"18446744073709551623 +040000004c18c385110c12f2d2add915dc7d609b0817814ebfcae0bf60091bdd88545b76ae5a00bf6d39362089982a62ebd3c547582005bd1168a1d5edffbc81b7099eb8f20a8653ffff7f2002000010@6f87f6bab6a3fd3a08fe1e5981de0039c77352465a56676368ca9aac781febf1"18446744073709551623  -04000000c07c03b1d922a34f35edb36e466fa7226a0d3acb3538e54d90197cfce8f58637c5c983c1d246c509743d5a9e1338c828a0497c466a6bf7df4a56202aaaeea8cd420e8653ffff7f20656666e6@0ec4db35ba72f4e7a57844e51cfe798510c751d871e8f3f5399007d67062f34b"18446744073709551625 +04000000f1eb1f78ac9aca686367565a465273c73900de81591efe083afda3b6baf6876f6aa0273ac76394d4ac3bb92a7125be10b7af99eacac93ac559cec7742533edb4660d8653ffff7f20f2ffffef@07fffdf3e1204395011f9b8263678f88343f9382ab22656e3c241c504cda3eab"18446744073709551625  -040000004bf36270d6079039f5f3e871d851c7108579fe1ce54478a5e7f472ba35dbc40e405ee5bac5d29ce2a4629ea0af03a35ca5e9049d5f254f3ea35b57ba7e1d911d940f8653ffff7f20626666e6@5084163d3f6b75e3b803aef4d007e1045f4a6810b3068598803280c405dfc996"18446744073709551627 +04000000ab3eda4c501c243c6e6522ab82933f34888f6763829b1f01954320e1f3fdff0799f9772ba31a4119539e356fe289a5e6f7c6c0e3546d14b08b928cbee2de27e7730e8653ffff7f20f2ffffef@1a55be8540845c0ae68b7cd054612cef74a779ad422f351328d5cf5a4ec6a4e8"18446744073709551627  -0400000096c9df05c4803280988506b310684a5f04e107d0f4ae03b8e3756b3f3d1684505b26435c69425452833fa52aaacbf92fe451d8388b48fe20fde131c4cb6c78239c118653ffff7f20646666e6@6bcd0fbbb65deb668cb020f02eb4f79ea26f11d19a7967ae91448fea0f140e56"18446744073709551629 +04000000e8a4c64e5acfd52813352f42ad79a774ef2c6154d07c8be60a5c844085be551a0e8dab732d830b1af5ed1d5a0eba7d1eff82d331c1ca963150c67f9368c9defd08108653ffff7f2001000000@5129c250541ec3bec4f3530510112f059dc3a3a8f4a7b77f16fc50c85d3ff190"18446744073709551629  -04000000560e140fea8f4491ae67799ad1116fa29ef7b42ef020b08c66eb5db6bb0fcd6b3c84de72cedc24e41262f593fd613dccb184fed49ca372866317f149404d2ee029138653ffff7f20636666e6@234880d8175504bf00f5274d17ea2af1f06054969fb3cf8e669d81233a62ec6f"18446744073709551631 +0400000090f13f5dc850fc167fb7a7f4a8a3c39d052f11100553f3c4bec31e5450c229511f10c6f4644b9f1addf7f97846a5dd272e41067e0ae97ee5a1f6ec85f1babdf89f128653ffff7f20f2ffffef@1e4d741d255c9b6c8cdf1e3074b362f65af1e156d74a96aa8c44d45a0a908053"18446744073709551631  -040000006fec623a23819d668ecfb39f965460f0f12aea174d27f500bf045517d8804823beb9086166aac2c71c7e2639fe5384eda90a57f60c2ea820991e3f54bc687cae63158653ffff7f20646666e6@025acea15637de97aa13a5f06d1084dbf5283a226ad9a3cce44fac5245a860e7 "18446744073709551633 +040000005380900a5ad4448caa964ad756e1f15af662b374301edf8c6c9b5c251d744d1ead07c9fda8ca9ac0f94a026df4be6e6a73cee606e06b781fe3e7b91f73da7178fe148653ffff7f2003000000@520837df774870c042b0a037302faa9066ec9e04602735f67af1e27a0482539e "18446744073709551633  -04000000e760a84552ac4fe4cca3d96a223a28f5db84106df0a513aa97de3756a1ce5a02796351c6d77ed20c7c3a5558cd6ddd4a04c03d5cfc0ce068be9f1c4716f9c008f1168653ffff7f20636666e6@6db4438559875ccdcb83228a734aa3b8df9d3c858c74018c9dfbf5e23e1536c3 +040000009e5382047ae2f17af6352760049eec6690aa2f3037a0b042c0704877df37085268a655486067b45c8cf3b27982053b229a83b0c9593b0fe72d6e0acbb8527c6324178653ffff7f2005000000@2c28538d757cfb6ef587779c24f4f7a2111fc2aa2ad7dc6c770c55ab408e1d0c "18446744073709551635  -04000000c336153ee2f5fb9d8c01748c853c9ddfb8a34a738a2283cbcd5c87598543b46d2cea51b09934e43e330d4392934c478c3a44af51a1fdbd6b15453fa1e39c5fd39d198653ffff7f2001000000@7fc0fb91b47926fc45a60eca5f5650e1a140e555be240c2a815f40c8ec78e173 "18446744073709551637 +040000000c1d8e40ab550c776cdcd72aaac21f11a2f7f4249c7787f56efb7c758d53282c588fac98b385a6f447309ecee5303ecd9a6374c3fc2b5886c94ba672e7fb30a267198653ffff7f20f2ffffef@1648fbdccc5e41d08da7194e24403ae942892557f3b4bc7562ba1c305ad8f1f2 "18446744073709551637  -0400000073e178ecc8405f812a0c24be55e540a1e150565fca0ea645fc2679b491fbc07fe80fc980344a24e45b5d56058a143c5bfee729c722920750bfb85f2b6e3de2f4001c8653ffff7f20cccccc4c@0344f52b8b32086e460421c35ca55d9acff31436f06d31c17dc3f51c367b6928 "18446744073709551639 +04000000f2f1d85a301cba6275bcb4f357258942e93a40244e19a78dd0415eccdcfb4816c33205e158469c920c8244bbb29be42985a2f4ca5cb69ba3d107dfaab4039b6fa61b8653ffff7f20f2ffffef@7607897e6bd8fb5ab91a8f7eabd68f2e1dfca6ea60780064841769e4cb23294d "18446744073709551639  -0400000028697b361cf5c37dc1316df03614f3cf9a5da55cc32104466e08328b2bf54403ddf9ffbe2c847d3d3b067f322bfa55aa39d242cda4a96598022dfe1f6f5b8753631d8653ffff7f2001000000@4aa53e0f7dd6c8ef00bd80d6d294b771f3e68c18a7678931eda5087ba9c131ae "18446744073709551641 +040000004d2923cbe469178464007860eaa6fc1d2e8fd6ab7e8f1ab95afbd86b7e890776812549bb05ffb17c0ddba4b9bdb68667c8b86388c2fe0b1f147cfd032f4f0c0ca81d8653ffff7f20fbffff5f@6e0e50704ea93fe4ef1e07b270dce22664038d673a5666a373afb2bd011ee5ea "18446744073709551641  -04000000ae31c1a97b08a5ed318967a7188ce6f371b794d2d680bd00efc8d67d0f3ea54afcb449e1adcbe83cbf4d9ddf1576eb6c642ab016fb16744726ae2278c194d60da81e8653ffff7f20646666e6@7d6da89610dafb25f3b74e6fe972448ee3dfbd0b495bb6d915253aba6c428d1b"18446744073709551643 +04000000eae51e01bdb2af73a366563a678d036426e2dc70b2071eefe43fa94e70500e6e06eb39770b012341ff0d51bc31f9243ac2258aa29ffec72a9b8fe4b6c78e737b42208653ffff7f2001000000@22e8ddb36b9883e79851f459a5e3704c71c81d6366f63ee179080f62ab73d4da"18446744073709551643  -040000001b8d426cba3a2515d9b65b490bbddfe38e4472e96f4eb7f325fbda1096a86d7d8a800ebab0fb4743eb902584bb36c1e39b55181267f1772b71a01e6c03dadf54f5208653ffff7f2033333333@4a4b80e7490c8e8deda42d27385cd910a96536a5277b6f7d0ca19bcb33bfa985"18446744073709551645 +04000000dad473ab620f0879e13ef666631dc8714c70e3a559f45198e783986bb3dde82248c3eabd5260e94049e0f21956f1a0f43fe7069776ea91684a87408bf094fc7ca9228653ffff7f20f5ffffef@31759a6cde49efab057a8cacff795eb58833c3871eab0dc788959bef21f6af5d"18446744073709551645  -0400000085a9bf33cb9ba10c7d6f7b27a53665a910d95c38272da4ed8d8e0c49e7804b4a6ddd7628410543c8906afa018d43dbf45e3998f2e2349c69ea10d85d6015004e33238653ffff7f2001000000@560cfde75c76317fa5f250b9d70eb61d433e69bec57af7c8a62b3042b6f6180c"18446744073709551647 +040000005daff621ef9b9588c70dab1e87c33388b55e79ffac8c7a05abef49de6c9a7531d87959d46705d959f011f3415d42bf43ef9885bb98661b2715730a93fe2ebdd2de248653ffff7f20faffff7f@70d07ba7d5a074cbd3bf58a5c83d0cd20ec7953130ef1517346e234611c87b58"18446744073709551647  -040000000c18f6b642302ba6c8f77ac5be693e431db60ed7b950f2a57f31765ce7fd0c564d50e046c2f77d40be413b835451ae9e6a1f50d2a33d27d0bae453626a475d62ef258653ffff7f2002000000@1c54e1f5b8606dc4e66de9a57af599880e892ab9743d0791da6279d0ef1e1fbd"18446744073709551649 +04000000587bc81146236e341715ef303195c70ed20c3dc8a558bfd3cb74a0d5a77bd070e0ad0381e174d89532b3e09a7f357c37685b44f8600c7b9402242331c403fa8aac268653ffff7f20ffffff6f@2c1dce576684f7849f4a0ca03d9add56408c402cd0ccf3705459f5ae84082d38"18446744073709551649  -04000000bd1f1eefd07962da91073d74b92a890e8899f57aa5e96de6c46d60b8f5e1541c031898114378c6753130525cabdffee748f8f1662c8e3d0c5e6aaa039c8d26c0bd288653ffff7f20656666e6@350cfbd72cacc209bd79801f59d61bfcf95176364696f4b84929024163ba1d60"18446744073709551651 +04000000382d0884aef5595470f3ccd02c408c4056dd9a3da00c4a9f84f7846657ce1d2c200983f65ba640334233e67fb1753ecf85b1942e521ed38cc9a4948982f7092422298653ffff7f20f3ffffef@24770ffd5bbab71b9b01b915e24df321c7db6c4fc15f88cd5c4290b5d934765d"18446744073709551651  -04000000601dba6341022949b8f49646367651f9fc1bd6591f8079bd09c2ac2cd7fb0c35637ed500c798052d175a9d5d546fbb7871b812b9c4ff604e184726e8fe79c8b4a12a8653ffff7f2002000000@454c0b626adedea288131107acc46b8cbafee1aa52d3f756c72ba9e11f69e3c4"18446744073709551653 +040000005d7634d9b590425ccd885fc14f6cdbc721f34de215b9019b1bb7ba5bfd0f7724ce42fb7ff6ed5dba77f87b559cba0bd406633825fa2d8af81fbedf0f033e29f7c12a8653ffff7f20f7ffffef@62e92ca101b97e6c5dc678e744f0c8c1300e0555f7ffea2e4c69966cbd508a2a"18446744073709551653  -04000000c4e3691fe1a92bc756f7d352aae1feba8c6bc4ac07111388a2dede6a620b4c451ef018d2c68677feb165029f9451aa49f081f8e02b28d12b5f5dc67d09fad8cc6c2c8653ffff7f20636666e6@5ae04641342b84e4fb990a054f292a1a973cb153775d57b1cb2183e17a9b4c57"18446744073709551655 +040000002a8a50bd6c96694c2eeafff755050e30c1c8f044e778c65d6c7eb901a12ce9620718e14287537a3bd5edba02b31790ed55fb6aac1fcd3c80d8b68a54948d73c6232c8653ffff7f20f4ffffef@7de9474fad854dda83466a88a9a2994cafd7eeff537b70d24956ff02a4dda6f2"18446744073709551655  -04000000574c9b7ae18321cbb1575d7753b13c971a2a294f050a99fbe4842b344146e05a0268eaad5853f4b88a888d26e82c846cf1254d98df0b640004405aabeffdb005cc2e8653ffff7f20646666e6@2b3c34aacd2f16b595d2bb5e4221153339905e63b758971907b01f810359bc13"18446744073709551657 +04000000f2a6dda402ff5649d2707b53ffeed7af4c99a2a9886a4683da4d85ad4f47e97d2a6ab8022b59d5cfa7501ff5ba047f47024116eb01812805af2a3c7edfacaad2e02e8653ffff7f2001000000@7a00ae556028b2f8fdb395d6277bb8e7a304f617dbb440c1beea9162626e47f7"18446744073709551657  -0400000013bc5903811fb007199758b7635e9039331521425ebbd295b5162fcdaa343c2bfee254ca75902620ccbd17902055b53879e3f02d802625ee0eb516e74903940ec3308653ffff7f2004000000@6966ef97ef921b0cc1fe4c6a1f420ef04b2b547e38638a70c91c86225bc8f381"18446744073709551659 +04000000f7476e626291eabec140b4db17f604a3e7b87b27d695b3fdf8b2286055ae007a103e90a1f38e7321759caef6ddb6d92ac685758589e2af564d826b9ad965af5898318653ffff7f20f2ffffef@40f7e9d99b824aafc3c9cf563e6888a0062643acdbf2aa9a8fe9b3bb76b7d2fe"18446744073709551659  -0400000081f3c85b22861cc9708a63387e542b4bf00e421f6a4cfec10c1b92ef97ef666972d87af3e0d96fa463a645e03d4c40fd6a28d541dcdfdcbf35104020ce8af12a8b338653ffff7f20636666e6@6f8967ec63afbb8f8aa78b6ddf5b849305c0a106f3560f7549e6b8ccc0719410"18446744073709551661 +04000000fed2b776bbb3e98f9aaaf2dbac432606a088683e56cfc9c3af4a829bd9e9f74012b5c93624ddb209c677e17fb359184a1fd711d836c36d3443201fb05b1851152b338653ffff7f20feffff2f@66c8ed096bd3ee1a0e210995129f5eb7975b2e2ec819b116ac78110cc0f453ca"18446744073709551661  -04000000109471c0ccb8e649750f56f306a1c00593845bdf6d8ba78a8fbbaf63ec67896fd9fc39e889006542030bddb3f28bdec39cb3fd95221bbd0a757bb6f960e1d5622a358653ffff7f2033333333@2618bd26691afcf0b7f11a9088781aae4f391db1836179463112806449c45d77"18446744073709551663 +04000000ca53f4c00c1178ac16b119c82e2e5b97b75e9f129509210e1aeed36b09edc866a8a41882ec902db74233c587ec3c39c13168da38ebe252cb569b72f3c872fc86ae348653ffff7f20f4ffffef@6c737295adaf132d04af204922076543e0a9191fdcbb92a9b69eece86c975af2"18446744073709551663  -04000000775dc4496480123146796183b11d394fae1a7888901af1b7f0fc1a6926bd1826aff98c3e17c0f1f1ccf480b90cc4b767e4b0ca7c9e3e14bc9248d53384c87a0a1c368653ffff7f2002000000@363db51764a8fe4fbd7e98875c451e8caa7a8aa4bf353c6a7eb967bde8a6d551"18446744073709551665 +04000000f25a976ce8ec9eb6a992bbdc1f19a9e0436507224920af042d13afad9572736cedbc20c35c4a3ce1991d6b2cfcd26818e027ff6ea0c60004455904ed9a431fbf19378653ffff7f20f7ffffef@3ecab8866f6f78c8b7ab4af837bc514052bda6f4bec56643ba0f27390267f970"18446744073709551665  -0400000051d5a6e8bd67b97e6a3c35bfa48a7aaa8c1e455c87987ebd4ffea86417b53d36bba03801a003a6c7a171ba57ff4979e3e75950efbf7e0fbeaeba0a5d5d26018571378653ffff7f2033333333@62ae812edcd4f5bc358f3325aa51ceffb92b174bdeaea10897e46ff8c5ef289d"18446744073709551667 +0400000070f9670239270fba4366c5bef4a6bd524051bc37f84aabb7c8786f6f86b8ca3e0ba683b3098b644f6f2596d8282c47a18f3c3661461e5303e7cc4c5e08d9cf56fa388653ffff7f20f3ffffef@035d031cf6459982837fce9c0b9b94d60cbdadc415086185e56f8eded2801e1f"18446744073709551667  -040000009d28efc5f86fe49708a1aede4b172bb9ffce51aa25338f35bcf5d4dc2e81ae62edd59db80830576ee2a695c144c3da5b4ed2fa981cd860ac0fd58dc1f0af9e3ee6388653ffff7f20636666e6@4a6c59148c82621c9d4189316676a6429b438a720d26060855c460ec54d49e61"18446744073709551669 +040000001f1e80d2de8e6fe585610815c4adbd0cd6949b0b9cce7f83829945f61c035d03d42d01810be58a253399bf0c176333d72cf43253d3585846f54fcc4aa5b0be3ebc3b8653ffff7f20f4ffffef@2633a08c5ecdb51b4ad6981d396c4d9df0b67717defacd71e1324333c4ba79e1"18446744073709551669  -04000000619ed454ec60c4550806260d728a439b42a676663189419d1c62828c14596c4adca83222cfb40ed28488af08befc4ca13b23ce24fb0bdaed25f8a3ae4490f8ebfc398653ffff7f20626666e6@79691279e061fca505e64b5de22bf9049c749d960a69600602784a66cdb21b4c"18446744073709551671 +04000000e179bac4334332e171cdfade1777b6f09d4d6c391d98d64a1bb5cd5e8ca03326712ee55d0e684500544a7791e21d66c72e7bd543d25cd6d42c3dd2d7bbdfff3a723e8653ffff7f20fbffff6f@6ee89bbdef1e99b3aabf22d2a639cc5b413164e06bf43acba6cc90a0c1416dcd"18446744073709551671  -040000004c1bb2cd664a78020660690a969d749c04f92be25d4be605a5fc61e079126979362122c8676ada2cb78cd3d49a45034ff689b27e284c4e7cf4774dac86592444b93c8653ffff7f209b999919@0d134db6c81f3e51a04277ab251904092386c962da420dea65845359e13827a3"18446744073709551673 +04000000cd6d41c1a090cca6cb3af46be06431415bcc39a6d222bfaab3991eefbd9be86e340293ec158884f28936847122a0ebd7226cb300b1778c0585e3bd368a96af3b05408653ffff7f20f2ffffef@28041ec175fee41e17afd4b273de1a45d38668b1d62c2163c3662865308da760"18446744073709551673  -04000000a32738e159538465ea0d42da62c9862309041925ab7742a0513e1fc8b64d130da8d79fa620f73afb02f418e8f2dc5577d38562717db4fff9d2e1df3ff9f9c18a183e8653ffff7f20626666e6@3717f4fd67d374d841cb69a9b8eb97a543a50b9992bc54ff93bf9e879cda8ca2"18446744073709551675 +0400000060a78d30652866c363212cd6b16886d3451ade73b2d4af171ee4fe75c11e04283f5ae2143fe6ae4abab3e417abf26ce3cbdec642089d920017d64bab0f98929ec2418653ffff7f20f2ffffef@6f20634550c0779061277f37d6a04059096bbf3da6d13c844f6c24cd2b44d564"18446744073709551675  -04000000a28cda9c879ebf93ff54bc92990ba543a597ebb8a969cb41d874d367fdf4173716ac548039a7ad83fc3082e2e12d7fd61b3029f76e81ca1dc730bf69a797a042953f8653ffff7f2001000000@601ba1654302090a768091dbb7a5726c4e886de808713a6c70b4a9f9d67b3b5c"18446744073709551677 +0400000064d5442bcd246c4f843cd1a63dbf6b095940a0d6377f27619077c0504563206fb56771a6c6a103642a3fdee9be76e9f1225696c69e0717c78a1fefc16cde7c627c448653ffff7f20f3ffffef@0fb4a0aa432bd08a13a5b0b35738c6ac1727c1fa2daae9cde2424274ef216c04"18446744073709551677  -040000005c3b7bd6f9a9b4706c3a7108e86d884e6c72a5b7db9180760a09024365a11b606e4905c6ce82af0f26534251311f58dc74914e3fca2674dc1e5213c94b8793f145418653ffff7f209d999919@62f38b7b6a7b66a777e1f5831272e3ea37e33a32dea241af5e0ea7a90337f91b "18446744073709551679 +04000000046c21ef744242e2cde9aa2dfac12717acc63857b3b0a5138ad02b43aaa0b40f43c63576874169c453f5a9fa392aef8f0515b14511a5732d7d1f0a9319cbde4737478653ffff7f20f7ffffef@6fbb5e5cab6a21979dc513b04712168f3883d84f7eed8c3d2ffcd57fe51c20fe "18446744073709551679  -040000001bf93703a9a70e5eaf41a2de323ae337eae3721283f5e177a7667b6a7b8bf362119ed80e3af4eb7118beac83fce2bb29538de0fbb377d0bd17c178d2cc50e0ed0e438653ffff7f2001000000@2c64287e0071c449d2bdd03edba3eb8d65ce202df56ce03a753d7718583c81ad!"18446744073709551681 +04000000fe201ce57fd5fc2f3d8ced7e4fd883388f161247b013c59d97216aab5c5ebb6fe30b3e0c36e35b593ab805f8ab2a8c23a4c3b25751a3b00d178307f083077b72e8488653ffff7f20feffff2f@479ed545d7525f649687db073cf1858399b8e799a8c0ff30d73ff2add81310d7!"18446744073709551681  -04000000ad813c5818773d753ae06cf52d20ce658deba3db3ed0bdd249c471007e28642c399962b841b685084a73f9c92e2c6350dd00ab4f8d86292b7bbb83b32e2535eed0458653ffff7f2002000000@3c48e7510eb78c684a45c9a6f13ef376fb9cf0cfbb5a34cfe77acd75b761be3e""18446744073709551683 +04000000d71013d8adf23fd730ffc0a899e7b8998385f13c07db8796645f52d745d59e47d007fa996e854e776d81f3244acd7e7f23fe00c9c35dbb7a7f400e65443ab366224b8653ffff7f20f6ffffef@699087237bf129fc33024b6265fcb4fb5ad084aa1b7fc4e54ba1910280cbdda0""18446744073709551683  -040000003ebe61b775cd7ae7cf345abbcff09cfb76f33ef1a6c9454a688cb70e51e7483c56e10f74b19b195429b544121d1416dd11cc13f4299653189d359f69f9213c3ae1478653ffff7f20636666e6@517a32b557023a360d3b45808e2bb49ce07525871a2355c17088cfdfa12df944#"18446744073709551685 +04000000a0ddcb800291a14be5c47f1baa84d05afbb4fc65624b0233fc29f17b238790690e8155c071f5c4b96071bded41c9ac4619d7ae7c9ee107323e0859c527e650ef4a4c8653ffff7f20f2ffffef@6cf45719fc6c72a669a13ab300f6355f18dfb6f5e37a8f999d072c913ebb7577#"18446744073709551685  -0400000044f92da1dfcf8870c155231a872575e09cb42b8e80453b0d363a0257b5327a51d8aff6eb202e813478188d008e36f4322a5f80f2107d40d7f0bfad24b10109aa404a8653ffff7f20cccccc4c@43406e254115db4275c28d047b330622921a8e0af891f70d4fa8f3e1f7ffa1ac$"18446744073709551687 +040000007775bb3e912c079d998f7ae3f5b6df185f35f600b33aa169a6726cfc1957f46c8c7861b4de1868fb849632f866cbcecb8d5e49602463ebad8daf247f6a2aebb4844d8653ffff7f20f2ffffef@38f94319491a53734956478277e86cf49e02cbe71a4a08973d89463875a81301$"18446744073709551687  -04000000aca1fff7e1f3a84f0df791f80a8e1a922206337b048dc27542db1541256e40438002a2edb28404257b32bb8deb3563134f7f4e9c28f42ceddeaf75ed65bc90ad3b4b8653ffff7f20636666e6@7415a79f9903f83ddab258d2bed7f56eeafe7ddc09c563c3bc675f5f85aff756%"18446744073709551689 +040000000113a8753846893d97084a1ae7cb029ef46ce8778247564973531a491943f9387ac932e4c539c3693fdf96b00bf3a3331d75447383db67293866b6c2a630898c414f8653ffff7f20f2ffffef@18edb8bbce8e5030f9f864e5443f4352d8ac71af93888c6211cb0eff419eea17%"18446744073709551689  -0400000056f7af855f5f67bcc363c509dc7dfeea6ef5d7bed258b2da3df803999fa71574e7c77c04b76f5f6ed6a99cbbc9a914420c1b761e5b7667f9de13c6e77c25e449414d8653ffff7f20636666e6@4d1ceef49be9c39d3fde673d20902f6baff1011c6f9e09fb1114a6eceeb4e0f3&"18446744073709551691 +0400000017ea9e41ff0ecb11628c8893af71acd852433f44e564f8f930508ecebbb8ed18914e73dbcc155f396ea0a9b5ee4b23c78692804bb6ce223cfb746e23ccd2035eac508653ffff7f2001000000@171cb283caf2c1d4c2bc88ea37cac84d8659249f773fabe0f6c98d370764c256&"18446744073709551691  -04000000f3e0b4eeeca61411fb099e6f1c01f1af6b2f90203d67de3f9dc3e99bf4ee1c4de6ce7eca6c935cb84dfceb4661295311a4f62fb882f580cf9d676502fef8e211ab4f8653ffff7f209a999919@3e495f4515d9e67946d7e59ebf1157f7c461e88dd71a3b333ce172fd13ac07a4'"18446744073709551693 +0400000056c26407378dc9f6e0ab3f779f2459864dc8ca37ea88bcc2d4c1f2ca83b21c173acd9b3295e0fdfb35e6d5822d13a3c2635b33c74e39cea0c853361c21d0aca84d538653ffff7f2003000000@5bc7a68a8e71f5951f661b98a3824817746664421826443c0bf5a7745e6f78bd'"18446744073709551693  -04000000a407ac13fd72e13c333b1ad78de861c4f75711bf9ee5d74679e6d915455f493e44e11e2350de763e5e0229b7de3a3a894a22d69b49f67af6ff1ec9b096ad4cf6a7518653ffff7f2001000000@7c11417ec3fe1c6af167a62f967af87881dcb3d20df24445260861368ee97f09("18446744073709551695 +04000000bd786f5e74a7f50b3c44261842646674174882a3981b661f95f5718e8aa6c75b52147f10ff2f946fa3b6a704738a2f7779a11bc390358233684c3962601861e3ca558653ffff7f20f2ffffef@3f3f80c93729d9931328584f66e8729c72d6e62db45611da9bda9376082f717d("18446744073709551695  -04000000097fe98e366108264544f20dd2b3dc8178f87a962fa667f16a1cfec37e41117cfa83761a616d79f184ff1d1cc3d4778acce344694880ce9f76c8eea6ac99f340e1538653ffff7f2002000000@7a630dbcb9899366404161566fadf3e59927d2db6e73ef05b32b08699e8c3fe1)"18446744073709551697 +040000007d712f087693da9bda1156b42de6d6729c72e8664f58281393d92937c9803f3f63b2e390838b6833eb9e18225fc45a0b06e6939074740110252b40995e0e03092b578653ffff7f20f2ffffef@100a739d2fabbc673f8f2c88aa49d24945421a59ffa269f03a59e0ff273adbf1)"18446744073709551697  -04000000e13f8c9e69082bb305ef736edbd22799e5f3ad6f56614140669389b9bc0d637a38516473d7c49121a4cee447173c2be3e390f5986272e94f508e5c98fbdf6a89b6558653ffff7f2002000000@45889ab69187541ebcd7ba1fc48a99a308a9f5a3cd0f1622f7918192e37f07a1*"18446744073709551699 +04000000f1db3a27ffe0593af069a2ff591a424549d249aa882c8f3f67bcab2f9d730a10affbf7bd9dcd482c9335684d40599f47e49a74ab81e19dd871bcc89c0f8cd7f34e598653ffff7f20f7ffff9f@3e1aafacbce378a1936299b0781ec861404687e0531d20932c59a6d50906b3de*"18446744073709551699  -04000000a1077fe3928191f722160fcda3f5a908a3998ac41fbad7bc1e548791b69a8845d137b3eaec4bec61a2c3873b5b450070b9b72b59c13a252c434469998207026a10578653ffff7f2003000000@21d8f7e06e1bef10a0f20cb2aa7132c1c81cee352a6f2106fc97bec9163b13e7+"18446744073709551701 +04000000deb30609d5a6592c93201d53e087464061c81e78b0996293a178e3bcacaf1a3e3e1d4a97b9a5635b01eb720d9f9dba5b3f2a0e296b2d9aa2da36e60f48b5b523595b8653ffff7f20f2ffffef@3e9258f632ce6507b1932d42f13aaa7c69d3fd688551cb1e59a8a93d7cbb5b35+"18446744073709551701  -04000000e7133b16c9be97fc06216f2a35ee1cc8c13271aab20cf2a010ef1b6ee0f7d8217c34988518c404259b67c0eb595c9fc561a2266c7a60e1fa0f640de34c8c4d3d48588653ffff7f2002000000@7ee0ae274f332ebbd67f9d6fc97f5820430e75d50e7d9848176f83b575074923,"18446744073709551703 +04000000355bbb7c3da9a8591ecb518568fdd3697caa3af1422d93b10765ce32f658923ee0e7a68191220e3da1d6d216e3c018e81ee2aefcbc66b5a82c117419496f0e16105e8653ffff7f20f2ffffef@22ff6b870147ea4639579759d1c1d7e4c370f08a4304468e23e1c2af784b3e60,"18446744073709551703  -0400000023490775b5836f1748987d0ed5750e4320587fc96f9d7fd6bb2e334f27aee07e83487b6c2c483b806d8f2dc6ef998cc538e77361dd7ad4ea156bc483e88679cb425a8653ffff7f2001000000@07f59ec16197a058f37794c524777b16f9a745f7a8f08ef09b5974767b7f20a8-"18446744073709551705 +04000000603e4b78afc2e1238e4604438af070c3e4d7c1d15997573946ea4701876bff225ab9cc6c30ee010e1ba86ff6d51ef7a04ffcb116ab554e0ef104797bd33664130c5f8653ffff7f20f6ffffef@72dc44e34caee4a16487a410b820e3f1ce194b8d536ac5a55238806c86c18347-"18446744073709551705  -04000000a8207f7b7674599bf08ef0a8f745a7f9167b7724c59477f358a09761c19ef507b3a23098ff232d04da6400c3ac95fb3cb3319dcf0cebbf36fffc0309588d98baa65b8653ffff7f20626666e6@25072be633104bd57e05a3e21f23b26f2d47074a2948d6d68c7b87381630caad."18446744073709551707 +040000004783c1866c803852a5c56a538d4b19cef1e320b810a48764a1e4ae4ce344dc72d56344f02b24d25c62c7cb2b3ffcc38638f72b933221388ed3b4b0083dac661ab1608653ffff7f20f3ffffef@21b6a30abdcaf4043f8e48fe9fd6394a8356f5a0ee794e5ce0a7c6d66faef3c5."18446744073709551707  -04000000adca301638877b8cd6d648294a07472d6fb2231fe2a3057ed54b1033e62b07256e35cf0a2ed88b31ac2de8714a87ca6f965dc7f54094ae34a9b96c9cf03e49f05b5d8653ffff7f20636666e6@43fddb6491ef012869ec1678660872eb286ac97b5e9ffbfff79f3b4fe0b027d5/"18446744073709551709 +04000000c5f3ae6fd6c6a7e05c4e79eea0f556834a39d69ffe488e3f04f4cabd0aa3b6211e58e57466052604e8309d2dd02347ed3fe6b200eb40c1d825e362fb1382461269638653ffff7f20fdffff3f@2d37c91a63abe6e729cc683c22d28ad4cd7fcfcdb7a4b261e557a2330aaad50f/"18446744073709551709  -04000000d527b0e04f3b9ff7fffb9f5e7bc96a28eb7208667816ec692801ef9164dbfd43192abc8b0d78bed8c9c920336647973470227efd929b2d7f486c66c3ef0d2e829a5f8653ffff7f209b999919@1f699de2e5c7482da8f89a65db48de4e611901eb5ff34ff72a8a8a3941673def0"18446744073709551711 +040000000fd5aa0a33a257e561b2a4b7cdcf7fcdd48ad2223c68cc29e7e6ab631ac9372de783a29bc090e14f24d3472d06616c6f16b49ca85c63c0a73226d149a67a238e64648653ffff7f20f7ffffef@5ce91ee1a989ac25b4073f296a05007af7d3adf2c5951ba6ed69854f4b0ed4110"18446744073709551711  -04000000ef3d6741398a8a2af74ff35feb0119614ede48db659af8a82d48c7e5e29d691f14262892b1289b64d848a613909af9d5112f30b7b641b15783c8c885a770487065628653ffff7f20cccccc4c@0e80a2b9c4469cb1c91cd953b6229eaf4ebc7cb1559c25ac5b5b82b422987cb31"18446744073709551713 +0400000011d40e4b4f8569eda61b95c5f2add3f77a00056a293f07b425ac89a9e11ee95cbd196a1623e4c0573b2be528357249beb7bab5f9604c97ee33e117bafda41b52aa658653ffff7f20f3ffffef@5747fea34e988ff287702283b1b4dd5af9877b36412a0c8408ff589ee7e733a41"18446744073709551713  -04000000b37c9822b4825b5bac259c55b17cbc4eaf9e22b653d91cc9b19c46c4b9a2800e386c110793e8ad1089dd6e969ecf3cec8151562d0758b5d17f3d2e5f9137b5cd7b648653ffff7f2002000000@59eaa04854b9a4937e0941142ca784103efbfe3fc91e39af4c0c012588e7425f2"18446744073709551715 +04000000a433e7e79e58ff08840c2a41367b87f95addb4b183227087f28f984ea3fe4757e1ef25bc44686a3346de1146c1bd2a25fb8d8a62f567ef01fd13e3d7674456d85a678653ffff7f20f5ffffef@4fa5c660a650e14d7f544076a5cca5931c62ac4a7bfacf9e1d42b6c05b6bdbce2"18446744073709551715  -040000005f42e78825010c4caf391ec93ffefb3e1084a72c1441097e93a4b95448a0ea59f2028b04bccc951af702cc58d5b51d6b0fdf761c4d88d030623d1ffe9e7568c108668653ffff7f20636666e6@1c39bf1896e5674fab02c0a74412a46c8a59638fec57e7f6ae5f9e4df5679c3a3"18446744073709551717 +04000000cedb6b5bc0b6421d9ecffa7b4aac621c93a5cca57640547f4de150a660c6a54f85e16c7201274880d63a79f610712b49357f9d5227e3b238690053f038fa8b3e52698653ffff7f2002000000@7e32a35129bc126674963424f99141ba8c6278d47485f8c733509d1a1f071a263"18446744073709551717  -040000003a9c67f54d9e5faef6e757ec8f63598a6ca41244a7c002ab4f67e59618bf391ca67c84e1a38c3d7088aeb6a18ec005960f3185adcae0454a37520c339b031b4b1c688653ffff7f20626666e6@2eed6ae0e3f537380c441849c7ae6e27d0c9bafc40ba988d2c4ece784cb7ad964"18446744073709551719 +04000000261a071f1a9d5033c7f88574d478628cba4191f9243496746612bc2951a3327e02d297387378031cdb965ec846aa4e4316410eb5132e76d49d488be6800830cd256b8653ffff7f20f2ffffef@33f3600146e0030ce2002680fee240da9ec93a59465619f5237b570e74cf4fe64"18446744073709551719  -0400000096adb74c78ce4e2c8d98ba40fcbac9d0276eaec74918440c3837f5e3e06aed2efad6155184535cedf2b592a549b6dc33e3d3c14a22e5e445c8d591a2d51f3cff76698653ffff7f20646666e6@7b056e5dce871f931335ca86489afb1e7b4e0e502d37362ee6df52614f397e0e5"18446744073709551721 +04000000e64fcf740e577b23f5195646593ac99eda40e2fe802600e20c03e0460160f33342c2df342be1ef18583d862d3005b0eb2d0c1b9054cfc053939baa833e585afb1a6c8653ffff7f20f3ffffef@39c72b1d2492d23a3adfb1aab42fff4a50d17f8ab62d0ae58e36d49cfb9557b95"18446744073709551721  -040000000e7e394f6152dfe62e36372d500e4e7b1efb9a4886ca3513931f87ce5d6e057b8d6c849f8fc7c309a8b267e7c28d99ec00206790954452f5e83de923d261d4ce9a6b8653ffff7f2001000000@306e6760278bad24e815e092c0062190a7a4fe9bf86ef02415381576da2e23836"18446744073709551723 +04000000b95795fb9cd4368ee50a2db68a7fd1504aff2fb4aab1df3a3ad292241d2bc739b56a970087fc4920542125d55bbaf08ca6c456be1f5ca4a85cd7b4e698f495283e6e8653ffff7f20f5ffffef@07f747046f77924c7197064c89d5097691eeaa236f29f0f9c1d68714827ecf2b6"18446744073709551723  -0400000083232eda7615381524f06ef89bfea4a7902106c092e015e824ad8b2760676e300e8d58bfdf2cb1b08db0d13d3248d6107b9a6263213d387aa166295ed55f8015e26d8653ffff7f2001000000@0bd031553efb205872596d24b56332843651c62d1c488de81994a8bf128b97157"18446744073709551725 +040000002bcf7e821487d6c1f9f0296f23aaee917609d5894c0697714c92776f0447f707d77a1f2b305f55060a850128a87c46c1ad5be1b579266d62cf2f7c23db95d1374f6f8653ffff7f20f2ffffef@780fd143db3e924d681da2f161e32a3083203b82f6a01d2f5d2586511c1cf58c7"18446744073709551725  -0400000015978b12bfa89419e88d481c2dc65136843263b5246d59725820fb3e5531d00b5acf95767c28c2b46499aa489bea1b2537cab272cd561668ee60200fe8e94459af708653ffff7f20cccccc4c@4a9ebaaee6769ef25c63b7f5ca61402f5e2017bc38e811a18d559602087c5a608"18446744073709551727 +040000008cf51c1c5186255d2f1da0f6823b2083302ae361f1a21d684d923edb43d10f7899642a6a570352f4647ab209cd212d5427d17cdf6c332a65d524842112509bdc38718653ffff7f20f2ffffef@6467334c0b9b34bda5bf4196f92b8a22ee2993db8d7d356e79ef1df2486e393c8"18446744073709551727  -04000000605a7c080296558da111e838bc17205e2f4061caf5b7635cf29e76e6aeba9e4ab959e9b85a12497137fe7a9b22437bbaba564a5b087af73cf9792d08bf1e1adaad728653ffff7f2002000000@35319de7820a35d9ae56bcd8a71687061efed6303c74ab57f6c0b318558113009"18446744073709551729 +040000003c396e48f21def796e357d8ddb9329ee228a2bf99641bfa5bd349b0b4c3367646d89ed576bb14862a4eb29c1c81371618cb7de703172073880fc7923496db6920d738653ffff7f2005000000@533324d797a99144eefb19c51da7932d9d128fce5d8d8850f15a3557e5cc4fca9"18446744073709551729  -040000000013815518b3c0f657ab743c30d6fe1e068716a7d8bc56aed9350a82e79d3135d29c6f138eedbc5274306392c2f42d232e544109cad963972ea8ee151c7f607470758653ffff7f2001000000@4613c418fb4b5f75401dc7c961c9ed26feea1b723694f7194a27ad97c2de47c2:"18446744073709551731 +04000000ca4fcce557355af150888d5dce8f129d2d93a71dc519fbee4491a997d7243353a089c5dee289ee746665ec374730b3ac05bbb01cfd278a9b41a43f3a7fa93f3735748653ffff7f2000000010@528499695a329b46ee472c43dbf581c9ec962cfd3151e78615b83bd06902877b:"18446744073709551731  -04000000c247dec297ad274a19f79436721beafe26edc961c9c71d40755f4bfb18c41346ef89a90a2194c9cdb2dafda1536fd3cfced0fce0661650473e3fef6b8069afcefd778653ffff7f2004000000@55ff3d0d68f3ec6e06f3ea81a3ee4e582f67e6c2006a8915473f0001767dc152;"18446744073709551733 +040000007b870269d03bb81586e75131fd2c96ecc981f5db432c47ee469b325a6999845275081a225f818ee1d7a4dab203600a7b07fe198cf3a16fc853cab2dbbc920d6627758653ffff7f20f3ffffef@47d7520aaa3ed467ca3e8a28d341bfa028cef942a45522d5e289146685806638;"18446744073709551733  -0400000052c17d7601003f4715896a00c2e6672f584eeea381eaf3066eecf3680d3dff55cbc891a798046c50624c29d6f62fe4b5e94707b27450face839000085fe82927cf798653ffff7f2002000000@4e180f392abbe1ca3243edb3f58f9268d892f50c0294d7c5733873ba59f07829<"18446744073709551735 +0400000038668085661489e2d52255a442f9ce28a0bf41d3288a3eca67d43eaa0a52d747cba9bffcf5f1417d406adba6660f36d7a7c8af349cca604f4dc6a66558682255da768653ffff7f20faffff6f@0d43f51073f106ffb3b210914981d06fe68dc1fe1f7eaa00d2fbc5eef8008b5b<"18446744073709551735  -040000002978f059ba733873c5d794020cf592d868928ff5b3ed4332cae1bb2a390f184ef8af5636db44eef6c88dd26bad4c4d46bd7b54488dbb0ec7ad070054ca9f6e86967b8653ffff7f2002000000@4a2e7b71ad2ba76956973d74f6a1175f01f97e46a7a34de361522f8d4eebc4cb="18446744073709551737 +040000005b8b00f8eec5fbd200aa7e1ffec18de66fd081499110b2b3ff06f17310f5430d032a376b3bb40b0a176ce6fdeac0003daf06e2426127b2ba9474578fe85c87bab6788653ffff7f20f2ffffef@4de3594f1a5f2fac53aa8e040b54f1b39815d437ab46b703ad3736eb157e4993="18446744073709551737  -04000000cbc4eb4e8d2f5261e34da3a7467ef9015f17a1f6743d975669a72bad717b2e4a460a2b460b25cde237975c882ffe6e5eaff1c6d3c0b58e1e762b743678a8df259a7c8653ffff7f20626666e6@400365bbe1cff8fdc3736d2155f3c1a6ad5dc60748395d296b6beb3ab2b3cc2d>"18446744073709551739 +0400000093497e15eb3637ad03b746ab37d41598b3f1540b048eaa53ac2f5f1a4f59e34d9fc27e312cc43a1525528f32d3fdaa4bb81219fc265ff530f2a6063cd5291284dc7a8653ffff7f20f2ffffef@4a09f9b4a612b713e085a6156b3b46b5370b2aef8070976d2dbd9c6adad81a76>"18446744073709551739  -040000002dccb3b23aeb6b6b295d394807c65dada6c1f355216d73c3fdf8cfe1bb650340d11777c3a630f8297599a17eba6873f1059bf701a50e1d17719ef2490b300fabee7e8653ffff7f20636666e6@15b980832e1234a0c03273b8362a3a3c69fcf7384f50a0013db2279813db52f3?"18446744073709551741 +04000000761ad8da6a9cbd2d6d977080ef2a0b37b5463b6b15a685e013b712a6b4f9094aae61747811649464e09d9512ede8147fa273b550a2e52259c87e7131b653890b957d8653ffff7f20f3ffffef@7fe5d02839ba0e645f77fa08ce4d61abe5acc793501322d80532de8a2d8f7c37?"18446744073709551741  -04000000f352db139827b23d01a0504f38f7fc693c3a2a36b87332c0a034122e8380b915a9b10ebd4c0470d9066c30c1f7c8fe54d8ccf9bb39d53166bb3588252176947845818653ffff7f20cdcccc4c@0ee786fc39d8360a360f811a533affe9807a94201a3a335c72fcf54f4afc1f59@"18446744073709551743 +04000000377c8f2d8ade3205d822135093c7ace5ab614dce08fa775f640eba3928d0e57f9184501671c4f56d1145d612b7e5aa54dbecc33a87c1ecca971830fc20f8c5354b7f8653ffff7f20fcffff6f@76682e09c416602b8dd6fc686defef76c7959b5cf5e5bcb343a553cb539a44ef@"18446744073709551743  -04000000591ffc4a4ff5fc725c333a1a20947a80e9ff3a531a810f360a36d839fc86e70ecdf2557ed0345a8e20078f2c6187b6fbc3260bc3269f99e777dfaf6fa00d6b07b9838653ffff7f2008000000@426eab6037bc7b2785ab094ed4fadff0066a67ec40d8a7e5a7eb4b8ec5dd016dA"18446744073709551745 +04000000ef449a53cb53a543b3bce5f55c9b95c776efef6d68fcd68d2b6016c4092e68765be8b7439021a9377208796551f707984f8dc7d5a60fdc80561c568426f2f3e29d818653ffff7f2001000000@38c27f961dc29008500f310ceaaf090822ac412adb18948937d44d1b689f3cf2A"18446744073709551745  -040000006d01ddc58e4beba7e5a7d840ec676a06f0dffad44e09ab85277bbc3760ab6e42c3496c800be78e4d6c2e0891e760aae7fc262f3de18d0939f0032d9ff5cbd32c3f868653ffff7f20626666e6@1500f1f7509e5a1c02b2af92e300057ccf4c5f0aa900934c0c169a7870286ce0B"18446744073709551747 +04000000f23c9f681b4dd437899418db2a41ac220809afea0c310f500890c21d967fc2380a191788cedfcd059f3dc97bb063b0f0be31732546293d1d6e738c9b9da7256f9d828653ffff7f20f4ffffef@2edfe94593bdf78fcb0dc412c4a006de0da73a93c67a5759a9dd401de4be500bB"18446744073709551747  -04000000e06c2870789a160c4c9300a90a5f4ccf7c0500e392afb2021c5a9e50f7f10015ae6f8d7333529e99d1328578446bede9cc771139ba4dfd8f5c992fb3b57b3a352c888653ffff7f20feffff7f@58675b2712b9de4f661c58ce9cfbff01cb9e322e1a14429623040e62b011e83bC"18446744073709551749 +040000000b50bee41d40dda959577ac6933aa70dde06a0c412c40dcb8ff7bd9345e9df2eaece1e8bc3425fd1f8c9d95f72be720bf9167de38507487989afca85d11143f203858653ffff7f20f2ffffef@49ba2baa1ebc37a7edb840b262488aca121c66a08f1ea26190af1b0931fc8810C"18446744073709551749  -040000003be811b0620e04239642141a2e329ecb01fffb9cce581c664fdeb912275b675856c21b7a4add50a7d3451596ce055f5c4ba8794c39f799d9e5e154d7264a95005d898653ffff7f20656666e6@536b365cda70214b3f67eab5daff1d461905a7139e68c6ec28e8d17863c07e00D"18446744073709551751 +040000001088fc31091baf9061a21e8fa0661c12ca8a4862b240b8eda737bc1eaa2bba49f14cf09ad9325092b4fa467d9956d53b8b40744be608500b184a39c1b323329d71868653ffff7f20f2ffffef@43f432459f40758a0a70e9a23ec188826d4539a0385acdf92190a41839f2e5b0D"18446744073709551751  -04000000007ec06378d1e828ecc6689e13a70519461dffdab5ea673f4b2170da5c366b53eb3025e4961aa52b0465f87ae3202bea45fb7cf7fb7a67b59c093d8e3a2767afe98a8653ffff7f20636666e6@145afa6fd5b4c5016f889958d3bace18cf9d993a974b61ef8b89512cc6bd84b0E"18446744073709551753 +04000000b0e5f23918a49021f9cd5a38a039456d8288c13ea2e9700a8a75409f4532f44331c765c63a293b9005089b20e1a1ed8bdc1867dc2313c47095e99678f8e1a7883a888653ffff7f20f5ffffef@7b28b65defd56185629daf244d33c44a58d2d54320514c6963cf4ad7134c5df5E"18446744073709551753  -04000000b084bdc62c51898bef614b973a999dcf18cebad35899886f01c5b4d56ffa5a14987657861a7e2bfe80a299f2327d337404dd82e273a084b80db04916a95df6b21f8c8653ffff7f209a999919@3afc21dc7bbc46ecc84f508f21a34600105c5ca2c1d4123d8f90710b44b51957F"18446744073709551755 +04000000f55d4c13d74acf63694c512043d5d2584ac4334d24af9d628561d5ef5db6287b6ac469c818e6b4a57a01035496e7578c9f544e188e2c07942608c6bc12dc6c58ab898653ffff7f20f3ffffef@1f27551fc28b568c47a34a93defa288f7d8a88ee8f71a3458cbf721e23c1e346F"18446744073709551755  -040000005719b5440b71908f3d12d4c1a25c5c100046a3218f504fc8ec46bc7bdc21fc3a0179b83e61fc503db7a8e47fbdfe8ce81b1cd1884f0ce948e45df709fe1aeac54b8e8653ffff7f2001000000@218c2c489731c01953755208823be425796ac50eacbab3691782b8119c592276G"18446744073709551757 +0400000046e3c1231e72bf8c45a3718fee888a7d8f28fade934aa3478c568bc21f55271f7670aad15146d1cd7163db4513dba4cb4985a2fb96bfb12822fa8c2de0e12785748c8653ffff7f20f2ffffef@1bc1736367bb215651336c01e3a457ca87505e27d90b1cf126d91beb27c904a3G"18446744073709551757  -040000007622599c11b8821769b3baac0ec56a7925e43b820852755319c03197482c8c21c6d14e43b4f11cb78d4283492d36dfb804ed446f9ffaf5806e3f376bc94f700ba18f8653ffff7f2034333333@316e8cd152428f3e8591249ddefa54e03d869fc40a35b24fe490ffc1c8cff0d1H"18446744073709551759 +04000000a304c927eb1bd926f11c0bd9275e5087ca57a4e3016c33515621bb676373c11ba461ac3450794083509d165ff571b34eb737aecb4b7301256218a3d4b0113ee1648e8653ffff7f2002000000@285cfdfae7a089832907e5d239557ca412b58414656328191c7f6e574d1c5e4eH"18446744073709551759  -04000000d1f0cfc8c1ff90e44fb2350ac49f863de054fade9d2491853e8f4252d18c6e31c43608de2f9c785b86bf012e5b21647784d7c4f6a7fb4801521abe9490900af30b928653ffff7f209a999919@0f04a6c5e2e06e34d5b615a23107a16de79e71b668b45913f91d242978bf0f2bI"18446744073709551761 +040000004e5e1c4d576e7f1c192863651484b512a47c5539d2e507298389a0e7fafd5c288719c4985a31830f6b61ecd62eadbea1a73db113194f547d39d9f49117cfde4230908653ffff7f20f2ffffef@700ab6c9398642ff5ee0d19c33991964d9b732435457a48afd2fb39ba70df865I"18446744073709551761  -040000002b0fbf7829241df91359b468b6719ee76da10731a215b6d5346ee0e2c5a6040f8e02cc4540be4fc4e5e858935db88ae9deeed36e6ae6e98b1b53e5ccfcd4cad31a948653ffff7f2004000000@43ab5dbad64c5b1ab3fb241007172521a5eafd96afaface89765c7cc873f0856J"18446744073709551763 +0400000065f80da79bb32ffd8aa457544332b7d9641999339cd1e05eff428639c9b60a703cccc79f9271c326adb2bfb43098c2f45b46d2dc0d964ac28f8a88244bcdd9909b918653ffff7f20f4ffffef@2f300be7cc1ad5980d59bee8d1cb513df41d48308e69dbc5a06c665b25307508J"18446744073709551763  -0400000056083f87ccc76597e8acafaf96fdeaa5212517071024fbb31a5b4cd6ba5dab4323b76578a1f37bfbebac0ef6f1ec2fa38cfb0286088bae7ecf087b2f7cbad255fa958653ffff7f2001000000@7aa4315229f4fdd84f07869f560867fe8738983098e8551c7820a3213ec6dbe6K"18446744073709551765 +04000000087530255b666ca0c5db698e30481df43d51cbd1e8be590d98d51acce70b302ffd731893f382250765fccf6748278f44c4f3dab75d719f0d851d29332bbc3c1018938653ffff7f20f2ffffef@28faeec6f8aadef52ccbeb351271d45629b9fd9fe4012d3b681f0ddfb9021cd2K"18446744073709551765  -04000000e6dbc63e21a320781c55e89830983887fe6708569f86074fd8fdf4295231a47ab7319b1bcbdc5f8e8d69626b01afa13bff9c430509552ef2c6ee00e4fa51194b26978653ffff7f2002000000@6a28b1c6eae1a5b34daac1fb94918629f240577758beebb28444eac24a7f9e56L"18446744073709551767 +04000000d21c02b9df0d1f683b2d01e49ffdb92956d4711235ebcb2cf5deaaf8c6eefa28127ecf0dae2f441c603db7e3c4068269045294607213e18acc9d4a77b81e15c221958653ffff7f20f2ffffef@78473d17ae9e263039b33af90e7f4ce6d5e3116676103676bb71dcae53bcb949L"18446744073709551767  -04000000569e7f4ac2ea4484b2ebbe58775740f229869194fbc1aa4db3a5e1eac6b1286a06681b7210cfefa7ad4dbaf8a232bf7c4f3d968e13a734182d9d7c8bf8b6485c74988653ffff7f20626666e6@050000fa6565e5bd765090993e25bc85fef1c7704bd20159a13d62ec56a87c69M"18446744073709551769 +0400000049b9bc53aedc71bb763610766611e3d5e64c7f0ef93ab33930269eae173d4778911729881e7acb3208b3f1097c0650213cf9249eaff313eb78c14fa10146be96e0978653ffff7f20f2ffffef@14b66f1dc072715e50947e2d3f238486c9c044296cdf5f008fdbaa0c4a34735aM"18446744073709551769  -04000000697ca856ec623da15901d24b70c7f1fe85bc253e99905076bde56565fa000005f0ca94c6c05fb23cefad131bffc8724fccf9f46b5b12d0abdb7f3f59d2e9e71d759a8653ffff7f209b999919@3989e6e3f29105ac5d5a4ca9259c5b9b070ac406bba897eef9ef05796cb6f43fN"18446744073709551771 +040000005a73344a0caadb8f005fdf6c2944c0c98684233f2d7e94505e7172c01d6fb614c5bee230259d1f90874bcc06acede61eaf04039d28c78935893d30da02b9a0cc42998653ffff7f20f2ffffef@7b440090f19fca17f9119dc34e66c5d229a4aea5688dbb2219c3bada2c17b754N"18446744073709551771  -040000003ff4b66c7905eff9ee97a8bb06c40a079b5b9c25a94c5a5dac0591f2e3e689399d3a0fc7d1748171a378386ad9882cf2d969141537e7cfbda00f3192ed4e4f2fdc9c8653ffff7f209a999919@60682f6992281f8d124ea86361f7224d6db59665f0691531de4a3c4c5922acb2O"18446744073709551773 +0400000054b7172cdabac31922bb8d68a5aea429d2c5664ec39d11f917ca9ff19000447b5943c9498be75e4a105fbb07dd549536e8c8d8ec1c5a3b521513c525dcb2c794b79a8653ffff7f2003000000@4a345b32d5ee1e3c5eaba32831b493651c829e6b7a4efeeaa2293037c4ec47d5O"18446744073709551773  -04000000b2ac22594c3c4ade311569f06596b56d4d22f76163a84e128d1f2892692f686082476a28a2475e0836d1012fdd3f268c9971cdf09150de2b08603ce722c87a5f659f8653ffff7f2001000000@651c21171cafa29de92b67b213a03053e2792257d773803afe36d2608e60d9f7P"18446744073709551775 +04000000d547ecc4373029a2eafe4e7a6b9e821c6593b43128a3ab5e3c1eeed5325b344a6ffb5e04beafa77351b2dbbc9c94a67a4b5b90cf2595ac13eca44d31ac6a6980c19c8653ffff7f20f4ffffef@51fc49395325b74457b301bfabe6d0458b68c1743967fc099425a848cec919e5P"18446744073709551775  -04000000f7d9608e60d236fe3a8073d7572279e25330a013b2672be99da2af1c17211c654de0e933554fe2000c3da53adab1b459cd5aee52948a277edeb1df67c171468493a18653ffff7f2034333333@1f303804eff1886e41de45594c1be5b8405983550d73da42cbc6c2d4bae44042Q"18446744073709551777 +04000000e519c9ce48a8259409fc673974c1688b45d0e6abbf01b35744b725533949fc51822ca97522a4a4b05ae4d7a5fad20cf1830888944bf6a4d864f69f747652e4a2fe9e8653ffff7f20f2ffffef@439c927f4367d52ce3b31f660f41590ea9dd497bfbf2f5ddabece7ec1b73298bQ"18446744073709551777  -040000004240e4bad4c2c6cb42da730d55835940b8e51b4c5945de416e88f1ef0438301f2f951088a8a8446544ccdbea1b170397621ccd576c6ef41b1fd10488f94594b6f7a28653ffff7f2002000000@230ca8b5a1ad95cc5fc322385d5a24daa2346cae2ebaffb1bce453afe5692b0aR"18446744073709551779 +040000008b29731bece7ecabddf5f2fb7b49dda90e59410f661fb3e32cd567437f929c43893f702a28c9d830cd567efc43f681fd4b8befb6e242a47d625ca42f486f4e9939a08653ffff7f20f2ffffef@47b7d818d625146423aa4988f0255ff78cbb887b00368549cc97b3c4e12a8859R"18446744073709551779  -040000000a2b69e5af53e4bcb1ffba2eae6c34a2da245a5d3822c35fcc95ada1b5a80c23208e42ef87c2c3ed67cd35747dcdf66dfc2905aa34a68dd77712ca215414c5e9eea38653ffff7f2001000000@0a7927df339e9c686dc46ead159618a60508156e14d5c32d4d014c436303780bS"18446744073709551781 +0400000059882ae1c4b397cc498536007b88bb8cf75f25f08849aa23641425d618d8b747b87bf37a0aac59acf1e3b0e9701cbc9f0a523e374d6461e2c15b6ef415b3618c22a28653ffff7f20f8ffffef@6a85c0c61e555b8ae9f7046aff4d3aa43bbaa116adc7eb4797c36ff33d201b33S"18446744073709551781  -040000000b780363434c014d2dc3d5146e150805a6189615ad6ec46d689c9e33df27790a34c45c9663d8d8f65185880d9cb87b0bdc24ef6882f8fd434520729c274f28db23a58653ffff7f209a999919@2cb0b61309002332cc586245aa9c5f6ad4a8381e956a11b4d814029f175fad41T"18446744073709551783 +04000000331b203df36fc39747ebc7ad16a1ba3ba43a4dff6a04f7e98a5b551ec6c0856ac8e61f7242fb2b1c414621637d4af6de190ca46e4c7d9c5df8f74776197cf1b32fa38653ffff7f20faffffef@3e8ebe3f4868cb1345de6f97fb384a39faf64003ce85959b3a6b91bdb6058e0fT"18446744073709551783  -0400000041ad5f179f0214d8b4116a951e38a8d46a5f9caa456258cc3223000913b6b02c58848831ca22d08d9076d0531f028250b67ffb43742e39adf3f2ce6f15e5344e57a78653ffff7f20626666e6@17e2303bf3aae9c33c1ace2d888a54912549b122cdf7fc425a64beb2ef71ad86U"18446744073709551785 +040000000f8e05b6bd916b3a9b9585ce0340f6fa394a38fb976fde4513cb68483fbe8e3e5823dc6be589aac3fae4571f903aeb41f8d01020507fb50f732613b7d8fd66f858a48653ffff7f20f4ffffef@725d82b6d29c109be459f6e6117390b068e6b760bc531f21c764ce1d0d061559U"18446744073709551785  -0400000086ad71efb2be645a42fcf7cd22b1492591548a882dce1a3cc3e9aaf33b30e2176cdf0ff629c2e1816e07f18825242982b4c321f8b547c948bd771d080abce48fe2a98653ffff7f2001000000@7099d165e16b0fde65ff30ab1a2f2e71c85aefdc622caefcf4762adcbf6c1e39V"18446744073709551787 +040000005915060d1dce64c7211f53bc60b7e668b0907311e6f659e49b109cd2b6825d7231e58d9c865ba9c25e05b52c4ce470ed65b7aca85585815585dd5931d834b24755a68653ffff7f20f2ffffef@7648dcda89941e24230dc7c0ccb8862f2f900efcad0cbf81ffb5a85814d30d9eV"18446744073709551787  -04000000391e6cbfdc2a76f4fcae2c62dcef5ac8712e2f1aab30ff65de0f6be165d1997066db5804fe0f8730604cbf37f9f2f8893becb9dca506aaf5b417a6c209ffe741ecab8653ffff7f20626666e6@31f46e68841e75b273df35acc463af1ecbea13200dedaaaf3a668f13e44eb643W"18446744073709551789 +040000009e0dd31458a8b5ff81bf0cadfc0e902f2f86b8ccc0c70d23241e9489dadc4876ae8d5e5831ce8982a472f174be4634eb86f096bec85069deda1bab712a77589befa78653ffff7f20f2ffffef@46bd545c7e31eb10f9fff5c358cf10e171999e8e859a2a2294c6312cd86421ceW"18446744073709551789  -0400000043b64ee4138f663aafaaed0d2013eacb1eaf63c4ac35df73b2751e84686ef431ab019a8d7070a50e00bd753d4ab995815f0845cbc77839dbeffd96b337c6125decad8653ffff7f2033333333@2ece9d8e89165a5a6fa8c0991dea679c88fdc3334c123825efd35c8dc3f9afb0X"18446744073709551791 +04000000ce2164d82c31c694222a9a858e9e9971e110cf58c3f5fff910eb317e5c54bd461d7628f6210eee979a3b5dfa2616a419515cd8187671d7430cb5c88bda131714b1aa8653ffff7f20f2ffffef@4bc77acdba7402280ecab34c6d48175dddf1baf2eface8080e6c72dd3110827dX"18446744073709551791  -04000000b0aff9c38d5cd3ef2538124c33c3fd889c67ea1d99c0a86f5a5a16898e9dce2eb138ca5fb9e6399b34f8d61b4a3988090a4ec22a33ac330fe3ebba3698e4cce513b08653ffff7f2001000000@1feb4e2c94996907f44047ee9e48a6ad35d0b37c7290f3e4e2643c01c8931951Y"18446744073709551793 +040000007d821031dd726c0e08e8aceff2baf1dd5d17486d4cb3ca0e280274bacd7ac74b9973ccec7742e1f7b9313ec1fe01dd1ca9356c09033fb4648a9832e5b3e59fd3f2ab8653ffff7f20f3ffffef@2a499213f8fd1a1e179ac0208ff93f9b790daa72bc96db5b90bcb6199b4f6221Y"18446744073709551793  -04000000511993c8013c64e2e4f390727cb3d035ada6489eee4740f4076999942c4eeb1f14f6e11a7e9df86ca53068a1b416f3ea970279d98d5d0ae557c5175b8b88356e10b18653ffff7f209a999919@6ca1b43237d5fcd0fda8b80bfcb91555279c0da3932f85837f68b6b0f74d6d2eZ"18446744073709551795 +0400000021624f9b19b6bc905bdb96bc72aa0d799b3ff98f20c09a171e1afdf81392492a52b20d7e2ee5e822deeef2b259c0eeae7c17c7e74d18f48f4e8ee2a5fe6f729f8ead8653ffff7f20f2ffffef@3cbb59311028c2653f16057db6cb51789d70f413d3386fb3f1f41c7630d5aad2Z"18446744073709551795  -040000002e6d4df7b0b6687f83852f93a30d9c275515b9fc0bb8a8fdd0fcd53732b4a16c483622afb677d8e868a5e012380ff19c78d2c899cbdd8863caf0b880974b91208fb38653ffff7f20636666e6@35b256db7143c61468515f50ff314c1dfb7b9d91a08cb0b352dab6ce859a5be1["18446744073709551797 +04000000d2aad530761cf4f1b36f38d313f4709d7851cbb67d05163f65c228103159bb3c14ab68b713afacbb6bd7f3134eebefae238c6871c7aea8a7f1d8cc69c719201c2faf8653ffff7f20f2ffffef@110346a35907d09cbd1e5087adf4d653f059247495cdaa2bda107d67d6e29a94["18446744073709551797  -04000000e15b9a85ceb6da52b3b08ca0919d7bfb1d4c31ff505f516814c64371db56b23525ca6f8e73d4ee36d7f0647c881b53c632fc5cfb74b135c0b29fa30ee778d92164b58653ffff7f20636666e6@586b5d05824e13417e409937eb205da1b759e93193b57aea6ba3b5df845668dd\"18446744073709551799 +04000000949ae2d6677d10da2baacd95742459f053d6f4ad87501ebd9cd00759a346031174c2f98916e9902a8e6999a62989679c52454f23c9d15c4842be11e523f62b073ab08653ffff7f20f7ffffef@480b7d14025c62f00855e30b4340913cffa61c78d0096805c9b91442f568fc2c\"18446744073709551799  -04000000dd685684dfb5a36bea7ab59331e959b7a15d20eb3799407e41134e82055d6b586673455143a9745a2c6b33e49cf03de7ccefd0fe005cfebb99cd64f77579d2547db78653ffff7f20636666e6@11487610ab154fd741ae93ffae2bcfba66f346d67459746f54e899c18bfea46b]"18446744073709551801 +040000002cfc68f54214b9c9056809d0781ca6ff3c9140430be35508f0625c02147d0b488054ef953c3153c7ace3d6b98ec4f0180b961aab732df4266c73fc6fdc089a1e6cb18653ffff7f20f2ffffef@6c97d4f644b3223e73081ff3dba94a9b44ab67de02aa9f0507c42da4e9b977d3]"18446744073709551801  -040000006ba4fe8bc199e8546f745974d646f366bacf2baeff93ae41d74f15ab1076481119cb7068f298b6f2def69aa04130e063bc0f31c305702288f6725ee968b6bbd000ba8653ffff7f20636666e6@72360f7222e30031d21ca6dc84893fadd77bae42474ce0bba616550356b4b01d^"18446744073709551803 +04000000d377b9e9a42dc407059faa02de67ab449b4aa9dbf31f08733e22b344f6d4976c72accf1ab197ffa289a4f14d21a709a58f7618bc89a464b4ec21958b0481c89d22b38653ffff7f20f3ffffef@227473a9ca5b7de8d6fa1195e3bc999e2eaa15d554d637cf0ea81b8f52d6763b^"18446744073709551803  -040000001db0b456035516a6bbe04c4742ae7bd7ad3f8984dca61cd23100e322720f36726412bf1a67e48bd24c94c2eec0026b5354b4df51572f38344e5c27cb742bb82466bc8653ffff7f20686666e6@27c2b2bfbd80da03d6f391823e845b518b26065a1cf4ae51fe471332065e6828_"18446744073709551805 +040000003b76d6528f1ba80ecf37d654d515aa2e9e99bce39511fad6e87d5bcaa9737422f48e035911a0d39ad04e48510f5d52433f3fb203c67ada75a779295f3a6bae57f4b48653ffff7f20f2ffffef@0533575b43ef2e3dcf68bfc05374e6a55bf855f81c564557246b7e6ab35c7215_"18446744073709551805  -0400000028685e06321347fe51aef41c5a06268b515b843e8291f3d603da80bdbfb2c22717ac59338a3a170872ccead2224e74b8127d584dcdd90686f2fa3966af9f382518be8653ffff7f20626666e6@345b77b0de264c26d940a80e109203ed409047986e9b76e916dc7c1b991e4dc9`"18446744073709551807 +0400000015725cb36a7e6b245745561cf855f85ba5e67453c0bf68cf3d2eef435b573305d101c6e4df5fdee8ce7e73dfce9a2aded31cf965a7d0574f49ea7a78f30c53825ab78653ffff7f20fdffff3f@515ad59b2b5099795da35961c51308e8f1d9cf79df2e2c07b98e24dbcafa06f4`"18446744073709551807  -04000000c94d1e991b7cdc16e9769b6e98479040ed0392100ea840d9264c26deb0775b34c80bc286f6505801e78bf71a0113fea69defcb2e4964f9b0a1ad5eb8024d698774c08653ffff7f2033333333@39ea50c45928f04e59ac93fca68b310c580230fbe7d35c52bb1d9ae688363133a"18446744073709551809 +04000000f406facadb248eb9072c2edf79cfd9f1e80813c56159a35d7999502b9bd55a51da31719213677adabe373993b4cb9218410a1cea8775df44b069c65dd5f25b46bcb88653ffff7f2001000000@7f73bbe33b9afea41e216a50e66a5823a13e6e4b0da53516524f2b8fbda0dc4ea"18446744073709551809  -0400000033313688e69a1dbb525cd3e7fb3002580c318ba6fc93ac594ef02859c450ea398b3f51b28c74d60f161413770dd7030084ac01b18890adfad73f4c1e7a8248f669c18653ffff7f2004000000@35c967d04fc4c2fd630b890c0266718a57b9a4e69b9a0f586d4b7cc7a01221bcb"18446744073709551811 +040000004edca0bd8f2b4f521635a50d4b6e3ea123586ae6506a211ea4fe9a3be3bb737f1b50a38cb3979ddd30931278affb069c29363a29657592441a669e919e800d77c3ba8653ffff7f20f3ffffef@6c8af20e583c4de8275f9960e630ef08fb4db1338b7f5cfee25d0b945ca4c48db"18446744073709551811  -04000000bc2112a0c77c4b6d580f9a9be6a4b9578a7166020c890b63fdc2c44fd067c935f785fde291eff06d091427c820b2f380f52b1ec6cf1c7c81711d2b93d10734ea83c28653ffff7f2001000080@2892894382ff6f330617d30d4ba4db38638a51b7a6b3e99a86d06d777655201ac"18446744073709551813 +040000008dc4a45c940b5de2fe5c7f8b33b14dfb08ef30e660995f27e84d3c580ef28a6c8261abdf2c315dce39e1b0afed3dcb258fd8b66c889f2b7aeb624ed13e772fa618bd8653ffff7f20f3ffffef@37f033d51d4e01dab378977a0fd6519d79b4ff18a6f2f592b17676dbcb512213c"18446744073709551813  -040000001a205576776dd0869ae9b3a6b7518a6338dba44b0dd31706336fff82438992282aaed5c0f4fec00b4402682d59ed0955bb7c7278cdc9a9fe12e3c4d46a75805cd2c48653ffff7f20636666e6@0ddc28d078c64ec94dddb578f2d07f2cab7ea10c4bfd52c0b057729c66f95cc8d"18446744073709551815 \ No newline at end of file +04000000132251cbdb7676b192f5f2a618ffb4799d51d60f7a9778b3da014e1dd533f037e2bebb077d6e331592454437d10b666cd91115693195e235a9c727894977612932bf8653ffff7f20f6ffffef@0e94820f8aca59c668c2a233882051d5e9e197956fae906e186d4be78ec6c1c6d"18446744073709551815 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork.dat b/packages/test-utils/testdata/btc_light_client_fork.dat index fc27f425..cf652a33 100644 --- a/packages/test-utils/testdata/btc_light_client_fork.dat +++ b/packages/test-utils/testdata/btc_light_client_fork.dat @@ -1,23 +1,23 @@  -040000002e6d4df7b0b6687f83852f93a30d9c275515b9fc0bb8a8fdd0fcd53732b4a16c1763eec07c14078f4810e444df3a4a8b35a23e75bf14b45ce12f5144f73fe19687b28653ffff7f20626666e6@6186e1412425593e6f332f4fdba4fe8d7c864225ce6e403526144e89560af767["18446744073709551797 +04000000d2aad530761cf4f1b36f38d313f4709d7851cbb67d05163f65c228103159bb3c64921b2946c1f942737d56f2f92fbd8a752d27738896186e0ded3e4532c4c5d6ddae8653ffff7f20f2ffffef@2b6bb0ba21189a4ecb235fb0fd547e5f30c43a98da0d2a290739bf21dd4a42e3["18446744073709551797  -0400000067f70a56894e142635406ece2542867c8dfea4db4f2f336f3e59252441e18661c3b7a8d57fe98869da5cc3b9093beb92a05468def25a50b2353847cc559cebf0a3b38653ffff7f20626666e6@03b73fe75921f51126927209ed331a2341263e8ac3ab3b75402b4b0b9674ca4a\"18446744073709551799 +04000000e3424add21bf3907292a0dda983ac4305f7e54fdb05f23cb4e9a1821bab06b2bb6a805046a40201d03393f6944d9b99e80b2cdcff8551fb93752f9ac5304c627feaf8653ffff7f20f2ffffef@308a5252c3dc7e2188ebf1854f9855bcf519cd1f8c46a3f39e58f7966476b64b\"18446744073709551799  -040000004aca74960b4b2b40753babc38a3e2641231a33ed0972922611f52159e73fb70375d1b9bbfa5116bba91d97bdafcb7a2430f6c6b3a0e310fd32bd53a418380836b4b58653ffff7f20636666e6@56068f09870397e3cc06bc8be663a75b8c5e7856eda06e9bcb4a1b1ef57141f2]"18446744073709551801 +040000004bb6766496f7589ef3a3468c1fcd19f5bc55984f85f1eb88217edcc352528a300bade6d3ce1f82694e76e4aafa3540f12c3bda7efe530b0b07347bdbef8219942db18653ffff7f20f2ffffef@3bb65618de6cb0b7a99a63988b5c222a8d2b6f9631f8972ba630712345bda591]"18446744073709551801  -04000000f24171f51e1b4acb9b6ea0ed56785e8c5ba763e68bbc06cce3970387098f0656f4b37eba22e7d9109875b43d9d5b5b4207d07401627046d97edb4ae2d2fb349d34b78653ffff7f20626666e6@513984f68ba83306ca305dfe1b85917fe1b42ad1bbeb22a894d16c65b3b4a1cd^"18446744073709551803 +0400000091a5bd45237130a62b97f831966f2b8d2a225c8b98639aa9b7b06cde1856b63bae5a00bf6d39362089982a62ebd3c547582005bd1168a1d5edffbc81b7099eb83bb28653ffff7f2002000000@3e3a9d79b88b6e9c93c6ac6982dbd0fcc4e933ca19ae82edf57ad34f5e657c86^"18446744073709551803  -04000000cda1b4b3656cd194a822ebbbd12ab4e17f91851bfe5d30ca0633a88bf6843951c5c983c1d246c509743d5a9e1338c828a0497c466a6bf7df4a56202aaaeea8cd0db98653ffff7f2002000000@53143176465da341ff5545d346650cf6d27bd79eb15c95e461c6f7b4bbef642b_"18446744073709551805 +04000000867c655e4fd37af5ed82ae19ca33e9c4fcd0db8269acc6939c6e8bb8799d3a3e6aa0273ac76394d4ac3bb92a7125be10b7af99eacac93ac559cec7742533edb4afb48653ffff7f2001000000@73c1380e16d4fd137145e8afa05bf7192ee277ed9774af81e153e522d503a0b7_"18446744073709551805  -040000002b64efbbb4f7c661e4955cb19ed77bd2f60c6546d34555ff41a35d4676311453405ee5bac5d29ce2a4629ea0af03a35ca5e9049d5f254f3ea35b57ba7e1d911d5fba8653ffff7f2001000000@0d790fa497844427ff3e13fae54cb7e2695873645d8e7503a1895e9bab60c907`"18446744073709551807 +04000000b7a003d522e553e181af7497ed77e22e19f75ba0afe8457113fdd4160e38c17399f9772ba31a4119539e356fe289a5e6f7c6c0e3546d14b08b928cbee2de27e7bcb58653ffff7f20f3ffffef@75f9f6b7b5826b3dc9aeeafa21eb499b4ef1cafa5331115bd7d64c3b777a35a8`"18446744073709551807  -0400000007c960ab9b5e89a103758e5d64735869e2b74ce5fa133eff27448497a40f790d5b26435c69425452833fa52aaacbf92fe451d8388b48fe20fde131c4cb6c782367bc8653ffff7f20656666e6@00924cf088e650fed31e7f73cbbd5d1572b6fae794e8e56c9a48a6b1c5d2d4e9a"18446744073709551809 +04000000a8357a773b4cd6d75b113153facaf14e9b49eb21faeaaec93d6b82b5b7f6f9750e8dab732d830b1af5ed1d5a0eba7d1eff82d331c1ca963150c67f9368c9defd51b78653ffff7f20f3ffffef@1185f7d04249ad5d4de79989f36a5c0b1d140c22fa9eb4cb39398ac9d9e0070ea"18446744073709551809  -04000000e9d4d2c5b1a6489a6ce5e894e7fab672155dbdcb737f1ed3fe50e688f04c92003c84de72cedc24e41262f593fd613dccb184fed49ca372866317f149404d2ee0f4bd8653ffff7f2001000000@5b33e3847739a4f5238953cf3767eb92c11c12bce0ccf401e927ca634e132436b"18446744073709551811 +040000000e07e0d9c98a3939cbb49efa220c141d0b5c6af38999e74d5dad4942d0f785111f10c6f4644b9f1addf7f97846a5dd272e41067e0ae97ee5a1f6ec85f1babdf8e8b98653ffff7f20f3ffffef@772d5dad5e53f1a2e07b37a2adbc2c0e0abb54fb72cf54eb9da4caa3b05fadddb"18446744073709551811  -040000003624134e63ca27e901f4cce0bc121cc192eb6737cf538923f5a4397784e3335bbeb9086166aac2c71c7e2639fe5384eda90a57f60c2ea820991e3f54bc687cae2ec08653ffff7f209b999919@02d0c2a49e4d8f024e4472ad023c3cb265796e692647a4569bfaa95dce3e5c12c"18446744073709551813 +04000000ddad5fb0a3caa49deb54cf72fb54bb0a0e2cbcada2377be0a2f1535ead5d2d77ad07c9fda8ca9ac0f94a026df4be6e6a73cee606e06b781fe3e7b91f73da717847bc8653ffff7f20f2ffffef@07aecf35204dbf3e666cf055278cf18e227a5bbad2ea6a70a0fc36c00884d1acc"18446744073709551813  -04000000125c3ece5da9fa9b56a44726696e7965b23c3c02ad72444e028f4d9ea4c2d002796351c6d77ed20c7c3a5558cd6ddd4a04c03d5cfc0ce068be9f1c4716f9c008bcc18653ffff7f2001000000@6c16619b2e79d271083650fb675246a274f17e3cdff7356bdd82faeb106afdc6d"18446744073709551815 +04000000acd18408c036fca0706aead2ba5b7a228ef18c2755f06c663ebf4d2035cfae0768a655486067b45c8cf3b27982053b229a83b0c9593b0fe72d6e0acbb8527c636dbe8653ffff7f20f2ffffef@3683d68b1a0f2257bf03e3c6fd26b45261abbd029924c10cd9f92f225971c31ad"18446744073709551815  -04000000c6fd6a10ebfa82dd6b35f7df3c7ef174a2465267fb50360871d2792e9b61166c2cea51b09934e43e330d4392934c478c3a44af51a1fdbd6b15453fa1e39c5fd368c48653ffff7f2001000000@56acf0dcc7cc0fc1a5440eb7e5921fa4b61b401ac208d6864ed1bbc036d8a1b4e"18446744073709551817 \ No newline at end of file +040000001ac37159222ff9d90cc1249902bdab6152b426fdc6e303bf57220f1a8bd68336588fac98b385a6f447309ecee5303ecd9a6374c3fc2b5886c94ba672e7fb30a2b0c08653ffff7f2001000000@6955a5fe7d7161d15db5a4dad62b10bf1557dbd41f204666b8a40215bf19fdbae"18446744073709551817 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork_msg.json b/packages/test-utils/testdata/btc_light_client_fork_msg.json index c2f026c3..97386dc4 100644 --- a/packages/test-utils/testdata/btc_light_client_fork_msg.json +++ b/packages/test-utils/testdata/btc_light_client_fork_msg.json @@ -1 +1 @@ -{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"6ca1b43237d5fcd0fda8b80bfcb91555279c0da3932f85837f68b6b0f74d6d2e","merkle_root":"96e13ff744512fe15cb414bf753ea2358b4a3adf44e410488f07147cc0ee6317","time":1401336455,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"6186e1412425593e6f332f4fdba4fe8d7c864225ce6e403526144e89560af767","merkle_root":"f0eb9c55cc473835b2505af2de6854a092eb3b09b9c35cda6988e97fd5a8b7c3","time":1401336739,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"03b73fe75921f51126927209ed331a2341263e8ac3ab3b75402b4b0b9674ca4a","merkle_root":"36083818a453bd32fd10e3a0b3c6f630247acbafbd971da9bb1651fabbb9d175","time":1401337268,"bits":545259519,"nonce":3865470563},{"version":4,"prev_blockhash":"56068f09870397e3cc06bc8be663a75b8c5e7856eda06e9bcb4a1b1ef57141f2","merkle_root":"9d34fbd2e24adb7ed94670620174d007425b5b9d3db4759810d9e722ba7eb3f4","time":1401337652,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"513984f68ba83306ca305dfe1b85917fe1b42ad1bbeb22a894d16c65b3b4a1cd","merkle_root":"cda8eeaa2a20564adff76b6a467c49a028c838139e5a3d7409c546d2c183c9c5","time":1401338125,"bits":545259519,"nonce":3865470564},{"version":4,"prev_blockhash":"6cbc771098b26d02ab466e9855be658c0cddd1ae690d0c529e559f3021d44f6f","merkle_root":"1d911d7eba575ba33e4f255f9d04e9a55ca303afa09e62a4e29cd2c5bae55e40","time":1401338463,"bits":545259519,"nonce":3865470565},{"version":4,"prev_blockhash":"6b0509953d7b7cdd76dd421af613e8fcd5ec8bd88f08fa7190567379efe48e84","merkle_root":"23786ccbc431e1fd20fe488b38d851e42ff9cbaa2aa53f83525442695c43265b","time":1401338983,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"212fc2708ede39cc1048aa168d632705db73023ba2ba1ca2a8be24240f96337e","merkle_root":"e02e4d4049f117638672a39cd4fe84b1cc3d61fd93f56212e424dcce72de843c","time":1401339380,"bits":545259519,"nonce":1},{"version":4,"prev_blockhash":"745b17770eb3e28dda913d72189477828f8d0e38fcd2839364f6878e920f99aa","merkle_root":"ae7c68bc543f1e9920a82e0cf6570aa9ed8453fe39267e1cc7c2aa666108b9be","time":1401339950,"bits":545259519,"nonce":3865470565},{"version":4,"prev_blockhash":"14e6b377f2b67fd426691954381808b6bf28477a401b0ec0102738d7c62f1c72","merkle_root":"08c0f916471c9fbe68e00cfc5c3dc0044add6dcd58553a7c0cd27ed7c6516379","time":1401340348,"bits":545259519,"nonce":3865470562},{"version":4,"prev_blockhash":"668a9198e9990373b76c0fa588e126669fda0aba1a48ac0ae0647272b2920950","merkle_root":"d35f9ce3a13f45156bbdfda151af443a8c474c9392430d333ee43499b051ea2c","time":1401341032,"bits":545259519,"nonce":3865470562}]}} \ No newline at end of file +{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"3cbb59311028c2653f16057db6cb51789d70f413d3386fb3f1f41c7630d5aad2","merkle_root":"d6c5c432453eed0d6e18968873272d758abd2ff9f2567d7342f9c146291b9264","time":1401335517,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"2b6bb0ba21189a4ecb235fb0fd547e5f30c43a98da0d2a290739bf21dd4a42e3","merkle_root":"27c60453acf95237b91f55f8cfcdb2809eb9d944693f39031d20406a0405a8b6","time":1401335806,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"308a5252c3dc7e2188ebf1854f9855bcf519cd1f8c46a3f39e58f7966476b64b","merkle_root":"941982efdb7b34070b0b53fe7eda3b2cf14035faaae4764e69821fced3e6ad0b","time":1401336109,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"3bb65618de6cb0b7a99a63988b5c222a8d2b6f9631f8972ba630712345bda591","merkle_root":"b89e09b781bcffedd5a16811bd05205847c5d3eb622a98892036396dbf005aae","time":1401336379,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"39fc26fb3f80af296bca0a0349eb937bee2713bbfda146bc2d7a47a32c53fb7a","merkle_root":"b4ed332574c7ce59c53ac9caea99afb710be25712ab93bacd49463c73a27a06a","time":1401337007,"bits":545259519,"nonce":4026531829},{"version":4,"prev_blockhash":"6fd7d82642ac803224e52a94ea11b16a44d715da01e9f4a8da01b1e23f4fa94f","merkle_root":"e727dee2be8c928bb0146d54e3c0c6f7e6a589e26f359e5319411aa32b77f999","time":1401337276,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"5c7243eb3b5edfa9bdc6d379b32f723f9d935d99f58d7c8ec3fad539427c28db","merkle_root":"fddec968937fc6503196cac131d382ff1e7dba0e5a1dedf51a0b832d73ab8d0e","time":1401337681,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"09519b0e9fbdd2aef4635a274913f49f6d478e51232b9081d7a3acc7da43e482","merkle_root":"f8bdbaf185ecf6a1e57ee90a7e06412e27dda54678f9f7dd1a9f4b64f4c6101f","time":1401338344,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"66fdfce54bccc9328de1098940a2f411bf16a6469ee3b1e113cf6ebadac88b10","merkle_root":"7871da731fb9e7e31f786be006e6ce736a6ebef46d024af9c09acaa8fdc907ad","time":1401338951,"bits":545259519,"nonce":536870911},{"version":4,"prev_blockhash":"1ff9a41ea1f798e44f299a6f6555a7cdd1466257e23d677efde484859eb1bb64","merkle_root":"637c52b8cb0a6e2de70f3b59c9b0839a223b058279b2f38c5cb467604855a668","time":1401339501,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"6b3688f531d34fc10fc0a6be976420e89b97fe29bc4d099489450b7324a1a4be","merkle_root":"a230fbe772a64bc986582bfcc374639acd3e30e5ce9e3047f4a685b398ac8f58","time":1401340080,"bits":545259519,"nonce":4026531826}]}} \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_timestamp.dat b/packages/test-utils/testdata/btc_timestamp.dat index 45def2cfccea3629d10aa360d0b7a5bec04e52c4..449d9f555296e49d3e1671d9d06ba5b78b396459 100644 GIT binary patch literal 5837 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 literal 80 zcmV-W0I&b_oLqNiERH=4UTUfXoQ)>HX8_UM5fmHPOhu*TMNACb^p}o1w#vAl0JVh- mLc8ur%mytXU(Z*{JrOIU4E9+`bEiU!7zrHz|9>E5W@hH3awEL} diff --git a/packages/test-utils/testdata/btc_timestamp_header1.dat b/packages/test-utils/testdata/btc_timestamp_header1.dat index 1f969e13..d3240759 100644 --- a/packages/test-utils/testdata/btc_timestamp_header1.dat +++ b/packages/test-utils/testdata/btc_timestamp_header1.dat @@ -1,2 +1 @@ -UG̽ U8y-&%I@ >$4K` U|)Lb Þ -UY cff \ No newline at end of file +yJsL]'m:6}%10DһZG%huB7 /yg)yJ E)H \ No newline at end of file diff --git a/packages/test-utils/testdata/btcstaking_params.dat b/packages/test-utils/testdata/btcstaking_params.dat index db43e4ceb5715967af38c07880a1dd81b7084f63..362ed0fc9755e0128cddf91140139c4efa38fe43 100644 GIT binary patch literal 217 zcmV;~04DzmAl=2G35GjZCZdT7T|SuU&;;_0YHfg+TG(HFh@~2&=?Wlxwes-UMem|eQW{SRAcJmjgap^W2oS>v ze$a}$kk5d=wC2q`;|LEf;lt9#Y7he&B5h}FLN{`FZewmTPC|5gXm@ioT4Pu_VRl$+ TWo}V#Yk4>-0WdNFFiHV1VXP{0xRL46>FnhGGmcC=w1TUeYA z`7>Jp5(SHysrBT{oR}SB0cRs=lh~y?8Ju)-Qh737;6p{)LzBv;B&_^m+ literal 102 zcmdsp>BV^-m)RZ~CQ0!!AOj@> Date: Mon, 2 Sep 2024 10:44:33 +1000 Subject: [PATCH 3/8] use a single rand source --- datagen/go.mod | 2 +- datagen/go.sum | 4 +- datagen/utils/btcstaking.go | 7 +- .../testdata/add_finality_sig_1_msg.dat | Bin 359 -> 359 bytes .../testdata/add_finality_sig_2_msg.dat | Bin 359 -> 359 bytes .../test-utils/testdata/btc_delegation.dat | Bin 3522 -> 3964 bytes .../test-utils/testdata/btc_light_client.dat | 200 +++++++++--------- .../testdata/btc_light_client_fork.dat | 22 +- .../testdata/btc_light_client_fork_msg.json | 2 +- .../test-utils/testdata/btc_timestamp.dat | Bin 5837 -> 5902 bytes .../testdata/btc_timestamp_header0.dat | 3 +- .../testdata/btc_timestamp_header1.dat | Bin 80 -> 80 bytes .../test-utils/testdata/btcstaking_params.dat | Bin 217 -> 217 bytes .../testdata/commit_pub_rand_msg.dat | 5 +- .../test-utils/testdata/eots_testdata.json | 2 +- .../test-utils/testdata/pub_rand_value.dat | 2 +- packages/test-utils/testdata/raw_ckpt.dat | Bin 102 -> 102 bytes 17 files changed, 125 insertions(+), 124 deletions(-) diff --git a/datagen/go.mod b/datagen/go.mod index cb6dcfc1..41207fb9 100644 --- a/datagen/go.mod +++ b/datagen/go.mod @@ -6,7 +6,7 @@ toolchain go1.21.4 require ( cosmossdk.io/math v1.3.0 - github.com/babylonlabs-io/babylon v0.9.0 + github.com/babylonlabs-io/babylon v0.9.2 github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcec/v2 v2.3.2 diff --git a/datagen/go.sum b/datagen/go.sum index 613e734f..e70a0cfd 100644 --- a/datagen/go.sum +++ b/datagen/go.sum @@ -268,8 +268,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.312 h1:llrElfzeqG/YOLFFKjg1xNpZCFJ2xraIi3PqSuP+95k= github.com/aws/aws-sdk-go v1.44.312/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/babylonlabs-io/babylon v0.9.0 h1:dHZ9wUrI5XLaO4UIwJRgiCdnzFdi5yv7dpibbu6TDv0= -github.com/babylonlabs-io/babylon v0.9.0/go.mod h1:t7B4e+ooD2oYvAxkegtNKDL9bXe+vU29a8xnCQh+UKo= +github.com/babylonlabs-io/babylon v0.9.2 h1:c1k6b15bZOYm1V2rG5kJ3nwhODGXAtFaQ0SnOA2b5Ss= +github.com/babylonlabs-io/babylon v0.9.2/go.mod h1:t7B4e+ooD2oYvAxkegtNKDL9bXe+vU29a8xnCQh+UKo= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= diff --git a/datagen/utils/btcstaking.go b/datagen/utils/btcstaking.go index d6d57cdd..6b98db80 100644 --- a/datagen/utils/btcstaking.go +++ b/datagen/utils/btcstaking.go @@ -21,10 +21,12 @@ const ( BTCSTAKING_PARAMS_FILENAME = "btcstaking_params.dat" ) -var net = &chaincfg.RegressionNetParams +var ( + net = &chaincfg.RegressionNetParams + r = rand.New(rand.NewSource(time.Now().Unix())) +) func GenParams(dir string) ([]*btcec.PrivateKey, uint32) { - r := rand.New(rand.NewSource(time.Now().Unix())) t := &testing.T{} // (3, 5) covenant committee @@ -51,7 +53,6 @@ func GenParams(dir string) ([]*btcec.PrivateKey, uint32) { } func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuorum uint32) { - r := rand.New(rand.NewSource(time.Now().Unix())) t := &testing.T{} // read params diff --git a/packages/test-utils/testdata/add_finality_sig_1_msg.dat b/packages/test-utils/testdata/add_finality_sig_1_msg.dat index 9eb99de919a2b9446347eb1af6a8f98aa09ef6ed..e826eed4e5fdca7f4c7db3cd600eb434b53ae0f5 100644 GIT binary patch literal 359 zcmV-t0hs;@Dq>=8F>P~edSrBSd1huab~0^uGHiKlcWZ2McXcvqWi)3rWqEpJGBkM- zAfk9ZUMG$kcOxb@OaVIh`I91Ic`E72HEPv8Bcqxf=on=pAbHxm!UV&lwP0O&{pa1e z;Q8rfP`$`|1#^>pq~WppAu6r`2nrAZ8XzV`&pIbTGdb=C6aDvfb;urV+;A|U+3LE%r!aP)fC zcztKDrzl@!nUeZp;8_QsgBX<%wG<*CSZl7S!od-)z%Wuog%)<0EZuqALwX(8uD9go z8o~siA|R9@5333VhtW&2J)1y=8F)}b~b~kr9ZgM#^cQ|!sWOQ_Sb7pcmV>WF!G&gQ_Xf|eYZFo5n zAopv$%x5j2_3aG^l8+U=I-0`&`C=JV;=O0JIdGBjaTsMHAaeY0Dd|V(Y}+s1>WNvB zpRy#GVV7#iC~p? z19FO)icTURV6z<@SaUU@_#S=Dvo#O_+?~k*0I=*N7Uu5qZykNjA|SF{0`F_#Mx#80r9;8WFx)hr8(0rbCMGfSE_QqVh FFSU5Nq00aO diff --git a/packages/test-utils/testdata/add_finality_sig_2_msg.dat b/packages/test-utils/testdata/add_finality_sig_2_msg.dat index 81662288639a7b60c177fbca2c741f18c594dd8e..8b15e8e2bbb3f10df1f33cdc49dd7d2dfbf04f1b 100644 GIT binary patch literal 359 zcmV-t0hs;@Dq>=8F?et_HgtJ)W^s6NY%^hccra>VW-v5(Wo2t>dN*!3W_LMeV{LX4 zAfk9ZUMG$kcOxb@OaVIh`I91Ic`E72HEPv8Bcqxf=on=pAbHxm!UV&lwP0O&{pa1e z;Q8rfP`$`|1#^>pq~WppAu6r`2nrAZ8XzV`&pIbTGdb=C6aDvfb;urV+;A|U+3LE%r!aP)fC zcztKDrzl@!nUeZp;8_QsgBX<%wG<*CSZl7S!od-)z%Wuog%)<0EZuqALwX(8uD9go z8o~siA|R9@5333VhtW&2J)1y{ zespvvmV2q0?SsBX0^hycu5JvaIv^Zh|3i1qkWsjdhYYcD|9h^+><=tNpy+JpzskIu FKlHx8qkjMZ literal 359 zcmV-t0hs;@Dq>=8F<~%nWjS_nI5stBWqLMwXESJbFm*XJdU|(ud317kG;U!vcQ|WNvB zpRy#GVV7#iC~p? z19FO)icTURV6z<@SaUU@_#S=Dvo#O_+?~k*0I=*N7Uu5qZykNjA|SF{0`F_#Mx#80r9;8WFx)hr8(0rbCMGf<8BKvTax*h5zl?74 z5#1LsCXkyh_dUi2wrhksoRI(lIv_O^(M4%U@n1IxFrfK9oo59hbXx?&Ji%7*skv+u F{A^1*oeTf~ diff --git a/packages/test-utils/testdata/btc_delegation.dat b/packages/test-utils/testdata/btc_delegation.dat index cf0e44de0739c6f9939ce00288d5c4f9c406cefb..49662fa5fa59b516d48bec41c0cf33479905bc3a 100644 GIT binary patch literal 3964 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 literal 3522 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 Vyfq1;Q^9p`H7lJ7hrLze{|~ocfq4J` diff --git a/packages/test-utils/testdata/btc_light_client.dat b/packages/test-utils/testdata/btc_light_client.dat index 78acd53e..c2ea12ee 100644 --- a/packages/test-utils/testdata/btc_light_client.dat +++ b/packages/test-utils/testdata/btc_light_client.dat @@ -1,202 +1,202 @@  -04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e6864921b2946c1f942737d56f2f92fbd8a752d27738896186e0ded3e4532c4c5d694078653ffff7f20f2ffffef@790cbcb9070f3c3ce455a88e0470d2aff20521cbb7aae1a04c94d06d9f1341cb"18446744073709551617 +04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e684312d5c92c1ab1da689538b6d8b8d1d92a9cbb07c5ed15daa166fe2d8d27677ad1088653ffff7f20ffffff1f@3669410d46fdbf59c521b2948f3986ff43b39d314a50b57c307f1f378f896699"18446744073709551617  -04000000cb41139f6dd0944ca0e1aab7cb2105f2afd270048ea855e43c3c0f07b9bc0c79b6a805046a40201d03393f6944d9b99e80b2cdcff8551fb93752f9ac5304c627b5088653ffff7f2001000000@1f69475472b01ac502af44f5ba6eb7f699b2b537b9857515804cc16f262854c1"18446744073709551619 +040000009966898f371f7f307cb5504a319db343ff86398f94b221c559bffd460d416936b61d02e31e33db91a0f5f85a6108bb2af87db761445e9149524b8726f76bd219250a8653ffff7f2001000000@770372c850910924e6dfc4f03d836bef416f582904bb0f043d13f6f3c8c6b8cd"18446744073709551619  -04000000c15428266fc14c80157585b937b5b299f6b76ebaf544af02c51ab0725447691f0bade6d3ce1f82694e76e4aafa3540f12c3bda7efe530b0b07347bdbef821994e4098653ffff7f2000000010@765b5488dd1b0960bfe0cabf4e8117089b607ddc15d9add2f2120c1185c3184c"18446744073709551621 +04000000cdb8c6c8f3f6133d040fbb0429586f41ef6b833df0c4dfe624099150c8720377966e546f76c22d478a49b909cf0e7a09cc20a72b01f68339f611c75afeecf1e4a80b8653ffff7f2000000010@668782f1d8565eb42b53d0f41b1d6af948875a48ea717aae5fec5d352a5755b4"18446744073709551621  -040000004c18c385110c12f2d2add915dc7d609b0817814ebfcae0bf60091bdd88545b76ae5a00bf6d39362089982a62ebd3c547582005bd1168a1d5edffbc81b7099eb8f20a8653ffff7f2002000010@6f87f6bab6a3fd3a08fe1e5981de0039c77352465a56676368ca9aac781febf1"18446744073709551623 +04000000b455572a355dec5fae7a71ea485a8748f96a1d1bf4d0532bb45e56d8f1828766fad0b545c6571bd6a6fccdd1881edeb11afc0bf5b85523aa8716be07e143012f790d8653ffff7f20f3ffffef@18ddc988ddb27297063b47871f6fcf7cc6eff37fb29d47089891b920067d42f2"18446744073709551623  -04000000f1eb1f78ac9aca686367565a465273c73900de81591efe083afda3b6baf6876f6aa0273ac76394d4ac3bb92a7125be10b7af99eacac93ac559cec7742533edb4660d8653ffff7f20f2ffffef@07fffdf3e1204395011f9b8263678f88343f9382ab22656e3c241c504cda3eab"18446744073709551625 +04000000f2427d0620b9919808479db27ff3efc67ccf6f1f87473b069772b2dd88c9dd180dc729ab179cc91272e61153a9d5426023ecc47da1c22f8c143e786e58e5e6327e0f8653ffff7f2000000010@75035bf44c46283dddd82cb16dde710e0ce63debf97a530b4ea9ef447dcbb8a1"18446744073709551625  -04000000ab3eda4c501c243c6e6522ab82933f34888f6763829b1f01954320e1f3fdff0799f9772ba31a4119539e356fe289a5e6f7c6c0e3546d14b08b928cbee2de27e7730e8653ffff7f20f2ffffef@1a55be8540845c0ae68b7cd054612cef74a779ad422f351328d5cf5a4ec6a4e8"18446744073709551627 +04000000a1b8cb7d44efa94e0b537af9eb3de60c0e71de6db12cd8dd3d28464cf45b03751ccb0e8587789a3334229d1a162c169709b2bb36811e90d0abb7f1f6d8f4798e91118653ffff7f2002000000@1724626a1cafd9fc0ee661a65b204f89c417a9dc43a5cce482ed01e8719b8a97"18446744073709551627  -04000000e8a4c64e5acfd52813352f42ad79a774ef2c6154d07c8be60a5c844085be551a0e8dab732d830b1af5ed1d5a0eba7d1eff82d331c1ca963150c67f9368c9defd08108653ffff7f2001000000@5129c250541ec3bec4f3530510112f059dc3a3a8f4a7b77f16fc50c85d3ff190"18446744073709551629 +04000000978a9b71e801ed82e4cca543dca917c4894f205ba661e60efcd9af1c6a622417a80e9714cc66dbf364d5e3b977a877a4d7087165e1b41ddcdab37e220dc5aa4c54138653ffff7f2001000000@25549d5231448fb103c7a9aa4007aa27d8286d9b0a77607fa4ae0d08547313b7"18446744073709551629  -0400000090f13f5dc850fc167fb7a7f4a8a3c39d052f11100553f3c4bec31e5450c229511f10c6f4644b9f1addf7f97846a5dd272e41067e0ae97ee5a1f6ec85f1babdf89f128653ffff7f20f2ffffef@1e4d741d255c9b6c8cdf1e3074b362f65af1e156d74a96aa8c44d45a0a908053"18446744073709551631 +04000000b7137354080daea47f60770a9b6d28d827aa0740aaa9c703b18f4431529d5425632aae94d7b8ed7ed72321f3765bf3c45888e83d707998c2489c118610796b28fb158653ffff7f20f2ffffef@119b6276b2eab0c978a70d5e3c863be8daf37903ddcad58844b4f21088883b59"18446744073709551631  -040000005380900a5ad4448caa964ad756e1f15af662b374301edf8c6c9b5c251d744d1ead07c9fda8ca9ac0f94a026df4be6e6a73cee606e06b781fe3e7b91f73da7178fe148653ffff7f2003000000@520837df774870c042b0a037302faa9066ec9e04602735f67af1e27a0482539e "18446744073709551633 +04000000593b888810f2b44488d5cadd0379f3dae83b863c5e0da778c9b0eab276629b112d8ccaa347fb9e1b129d4f62db6bcea29daf8d22d9ba2617ccca61e76992032481178653ffff7f20f2ffffef@1c094a9b65c89c26933b1ea382aa6fdefe6c9bacbf7009c3d5fc76b192ef79ea "18446744073709551633  -040000009e5382047ae2f17af6352760049eec6690aa2f3037a0b042c0704877df37085268a655486067b45c8cf3b27982053b229a83b0c9593b0fe72d6e0acbb8527c6324178653ffff7f2005000000@2c28538d757cfb6ef587779c24f4f7a2111fc2aa2ad7dc6c770c55ab408e1d0c +04000000ea79ef92b176fcd5c30970bfac9b6cfede6faa82a31e3b93269cc8659b4a091c919279b5a12e6171f8327085f969bb261b0d9643d4289d17bc8b2e7f6fa156d8b1198653ffff7f20f2ffffef@6aec1583e223854dd513ea6bd0dd77047b2570625862b876a41bd4d6583b9c0b "18446744073709551635  -040000000c1d8e40ab550c776cdcd72aaac21f11a2f7f4249c7787f56efb7c758d53282c588fac98b385a6f447309ecee5303ecd9a6374c3fc2b5886c94ba672e7fb30a267198653ffff7f20f2ffffef@1648fbdccc5e41d08da7194e24403ae942892557f3b4bc7562ba1c305ad8f1f2 "18446744073709551637 +040000000b9c3b58d6d41ba476b862586270257b0477ddd06bea13d54d8523e28315ec6a17ead191c679479f1edce3368e10830cfb85b46b30f97aa6a054c09f554dd241b81b8653ffff7f2001000010@392de3402fe87f3be6495ed66361f772fb8e75fc366247af337805f63e7d48e2 "18446744073709551637  -04000000f2f1d85a301cba6275bcb4f357258942e93a40244e19a78dd0415eccdcfb4816c33205e158469c920c8244bbb29be42985a2f4ca5cb69ba3d107dfaab4039b6fa61b8653ffff7f20f2ffffef@7607897e6bd8fb5ab91a8f7eabd68f2e1dfca6ea60780064841769e4cb23294d "18446744073709551639 +04000000e2487d3ef6057833af476236fc758efb72f76163d65e49e63b7fe82f40e32d394d94c0112f8b2370467a230c9f56ea49c82e73f44b9718cd6ba601c93024ea33c51d8653ffff7f2000000030@1f06dde32123dc57e36540fcf7a75a52984c59c8f30dac053b692c8afbc48310 "18446744073709551639  -040000004d2923cbe469178464007860eaa6fc1d2e8fd6ab7e8f1ab95afbd86b7e890776812549bb05ffb17c0ddba4b9bdb68667c8b86388c2fe0b1f147cfd032f4f0c0ca81d8653ffff7f20fbffff5f@6e0e50704ea93fe4ef1e07b270dce22664038d673a5666a373afb2bd011ee5ea "18446744073709551641 +040000001083c4fb8a2c693b05ac0df3c8594c98525aa7f7fc4065e357dc2321e3dd061ffd10f3b7be4621092e44fbf02ed9235fc1bef44747f5737503c98a97d731853c411f8653ffff7f20f3ffffef@2ba4f814a8cbd370a52c13c4b8abb0c2858d66c334b3e1e031da515155c91e47 "18446744073709551641  -04000000eae51e01bdb2af73a366563a678d036426e2dc70b2071eefe43fa94e70500e6e06eb39770b012341ff0d51bc31f9243ac2258aa29ffec72a9b8fe4b6c78e737b42208653ffff7f2001000000@22e8ddb36b9883e79851f459a5e3704c71c81d6366f63ee179080f62ab73d4da"18446744073709551643 +04000000471ec9555151da31e0e1b334c3668d85c2b0abb8c4132ca570d3cba814f8a42be3846244d67441e5dbbace0de8f40979ffaec5f38b4e8ac46656dd3d09f411275d208653ffff7f20f6ffffef@20ef1480bfc1f887704cb26fc5c80c84dd608525f00abb3fe79ac8028af32f8f"18446744073709551643  -04000000dad473ab620f0879e13ef666631dc8714c70e3a559f45198e783986bb3dde82248c3eabd5260e94049e0f21956f1a0f43fe7069776ea91684a87408bf094fc7ca9228653ffff7f20f5ffffef@31759a6cde49efab057a8cacff795eb58833c3871eab0dc788959bef21f6af5d"18446744073709551645 +040000008f2ff38a02c89ae73fbb0af0258560dd840cc8c56fb24c7087f8c1bf8014ef20c7dd66b12e2e4d5f08a2025a5f3159ccd07c4d9207cdc3f81dd67cc7dedd5e48a8218653ffff7f20f2ffffef@5d0ef7b653bb469ee6827484c4aba568542867ce5487580863d905e6900ad712"18446744073709551645  -040000005daff621ef9b9588c70dab1e87c33388b55e79ffac8c7a05abef49de6c9a7531d87959d46705d959f011f3415d42bf43ef9885bb98661b2715730a93fe2ebdd2de248653ffff7f20faffff7f@70d07ba7d5a074cbd3bf58a5c83d0cd20ec7953130ef1517346e234611c87b58"18446744073709551647 +0400000012d70a90e605d96308588754ce67285468a5abc4847482e69e46bb53b6f70e5d261d8090a3e468bbe9ad1f725a39748c6ddf89601b7683f559bab5d2e59e1a3d3f238653ffff7f20f2ffffef@79384b1b9be2163f40fffa484d70980500441fb3d5fb2a68e097adfe726b1d3a"18446744073709551647  -04000000587bc81146236e341715ef303195c70ed20c3dc8a558bfd3cb74a0d5a77bd070e0ad0381e174d89532b3e09a7f357c37685b44f8600c7b9402242331c403fa8aac268653ffff7f20ffffff6f@2c1dce576684f7849f4a0ca03d9add56408c402cd0ccf3705459f5ae84082d38"18446744073709551649 +040000003a1d6b72fead97e0682afbd5b31f44000598704d48faff403f16e29b1b4b3879b39d9641719b6d29e177f4ecc1ed5c2ba0d81e78c045991228f4260ae04fb031ae248653ffff7f2001000030@589c909bbc95ddf61e00982500224d80d00a115e736593b9826b80b2983baa5c"18446744073709551649  -04000000382d0884aef5595470f3ccd02c408c4056dd9a3da00c4a9f84f7846657ce1d2c200983f65ba640334233e67fb1753ecf85b1942e521ed38cc9a4948982f7092422298653ffff7f20f3ffffef@24770ffd5bbab71b9b01b915e24df321c7db6c4fc15f88cd5c4290b5d934765d"18446744073709551651 +040000005caa3b98b2806b82b99365735e110ad0804d22002598001ef6dd95bc9b909c580994cbacdf5ec68799d0654d5d99d80ec670f03c3150a8f9089a09cae472bdf7f4268653ffff7f2002000000@4213723fa4288edb3b382bcd4c70cdd2a61a66ad66dedf8a31bf6c3324e11bf6"18446744073709551651  -040000005d7634d9b590425ccd885fc14f6cdbc721f34de215b9019b1bb7ba5bfd0f7724ce42fb7ff6ed5dba77f87b559cba0bd406633825fa2d8af81fbedf0f033e29f7c12a8653ffff7f20f7ffffef@62e92ca101b97e6c5dc678e744f0c8c1300e0555f7ffea2e4c69966cbd508a2a"18446744073709551653 +04000000f61be124336cbf318adfde66ad661aa6d2cd704ccd2b383bdb8e28a43f721342d0479e809b6cced456583d616cbe0b59740f9a50243fd30594bfbc8941deeaac88288653ffff7f20feffff2f@743bbf1bf1e575771d79bad6529713665b140be4085be6ada8cdd0d95849744a"18446744073709551653  -040000002a8a50bd6c96694c2eeafff755050e30c1c8f044e778c65d6c7eb901a12ce9620718e14287537a3bd5edba02b31790ed55fb6aac1fcd3c80d8b68a54948d73c6232c8653ffff7f20f4ffffef@7de9474fad854dda83466a88a9a2994cafd7eeff537b70d24956ff02a4dda6f2"18446744073709551655 +040000004a744958d9d0cda8ade65b08e40b145b66139752d6ba791d7775e5f11bbf3b747393deb15052545d5e7ff1201180b754a7d3e15acbe223a6a9af5ca3d2196c87352b8653ffff7f2000000010@62c706957438b5520a799c96bcaf4ade59a4889f76e181f41207350057b8f585"18446744073709551655  -04000000f2a6dda402ff5649d2707b53ffeed7af4c99a2a9886a4683da4d85ad4f47e97d2a6ab8022b59d5cfa7501ff5ba047f47024116eb01812805af2a3c7edfacaad2e02e8653ffff7f2001000000@7a00ae556028b2f8fdb395d6277bb8e7a304f617dbb440c1beea9162626e47f7"18446744073709551657 +0400000085f5b85700350712f481e1769f88a459de4aafbc969c790a52b538749506c762cc93f9245ca6fc0d1b82cb3a575b192108954fb5ddec6ede19fbd80ae27ad6b15c2c8653ffff7f2002000000@7e71ba2038685504e4fa803ad44000437d6b97c3579d0da5db47373d66822bc0"18446744073709551657  -04000000f7476e626291eabec140b4db17f604a3e7b87b27d695b3fdf8b2286055ae007a103e90a1f38e7321759caef6ddb6d92ac685758589e2af564d826b9ad965af5898318653ffff7f20f2ffffef@40f7e9d99b824aafc3c9cf563e6888a0062643acdbf2aa9a8fe9b3bb76b7d2fe"18446744073709551659 +04000000c02b82663d3747dba50d9d57c3976b7d430040d43a80fae40455683820ba717e6fc2585661a5e1bae9dad1cd261da59893f1bc8dd42293000af6665ec3ecb9e10d2e8653ffff7f20fdffff3f@4da25696bba59e5e75a3ef2ce365fe0ea6ef3ebfa0dcdd71539f715af93a67c4"18446744073709551659  -04000000fed2b776bbb3e98f9aaaf2dbac432606a088683e56cfc9c3af4a829bd9e9f74012b5c93624ddb209c677e17fb359184a1fd711d836c36d3443201fb05b1851152b338653ffff7f20feffff2f@66c8ed096bd3ee1a0e210995129f5eb7975b2e2ec819b116ac78110cc0f453ca"18446744073709551661 +04000000c4673af95a719f5371dddca0bf3eefa60efe65e32cefa3755e9ea5bb9656a24d436844ef7bb2198755588c98c5090cf5899f0b2eef299bcd11ea2909ebfaf0a466308653ffff7f2000000010@19ddc4d0ffda38fa9e307050af30c8abc093ff2cfe6b283b901652e5ce812813"18446744073709551661  -04000000ca53f4c00c1178ac16b119c82e2e5b97b75e9f129509210e1aeed36b09edc866a8a41882ec902db74233c587ec3c39c13168da38ebe252cb569b72f3c872fc86ae348653ffff7f20f4ffffef@6c737295adaf132d04af204922076543e0a9191fdcbb92a9b69eece86c975af2"18446744073709551663 +04000000132881cee55216903b286bfe2cff93c0abc830af5070309efa38daffd0c4dd19643bb81fdd3267ba12c12c4f46c93c521310a0222af0f58a6d09d6853ddc88c89c328653ffff7f2001000000@14b3aca6487318fa4ced821814ac64f64b0dddc4e60d1822858696dfd5e7474a"18446744073709551663  -04000000f25a976ce8ec9eb6a992bbdc1f19a9e0436507224920af042d13afad9572736cedbc20c35c4a3ce1991d6b2cfcd26818e027ff6ea0c60004455904ed9a431fbf19378653ffff7f20f7ffffef@3ecab8866f6f78c8b7ab4af837bc514052bda6f4bec56643ba0f27390267f970"18446744073709551665 +040000004a47e7d5df96868522180de6c4dd0d4bf664ac141882ed4cfa187348a6acb314ba64ce7a0b1309a6cb8edc155dd638bd0db362203036816e95a3a6cff68403581d348653ffff7f2001000000@7f4118c47f66bd7cdac37fff438815cd110db7ffa87745a5afb6374d904fc701"18446744073709551665  -0400000070f9670239270fba4366c5bef4a6bd524051bc37f84aabb7c8786f6f86b8ca3e0ba683b3098b644f6f2596d8282c47a18f3c3661461e5303e7cc4c5e08d9cf56fa388653ffff7f20f3ffffef@035d031cf6459982837fce9c0b9b94d60cbdadc415086185e56f8eded2801e1f"18446744073709551667 +0400000001c74f904d37b6afa54577a8ffb70d11cd158843ff7fc3da7cbd667fc418417f6d1fc779fe039c991d39ed5ca4046892981a7307a341ba2840e38a24a33e7a87ca358653ffff7f20f3ffffef@414228c922386fc377bc5f4ac8ebb64e9d2818802460f89a6e642587e8892005"18446744073709551667  -040000001f1e80d2de8e6fe585610815c4adbd0cd6949b0b9cce7f83829945f61c035d03d42d01810be58a253399bf0c176333d72cf43253d3585846f54fcc4aa5b0be3ebc3b8653ffff7f20f4ffffef@2633a08c5ecdb51b4ad6981d396c4d9df0b67717defacd71e1324333c4ba79e1"18446744073709551669 +04000000052089e88725646e9af860248018289d4eb6ebc84a5fbc77c36f3822c92842419a72c457983d1c24f0867d3b41cc07639f2276d46b1689272db027593fec01a7b0378653ffff7f2002000010@36c018b6b6896fb9463af3534d21dbfbf14c6b4a73cb3f7acd832ef9591ebd5e"18446744073709551669  -04000000e179bac4334332e171cdfade1777b6f09d4d6c391d98d64a1bb5cd5e8ca03326712ee55d0e684500544a7791e21d66c72e7bd543d25cd6d42c3dd2d7bbdfff3a723e8653ffff7f20fbffff6f@6ee89bbdef1e99b3aabf22d2a639cc5b413164e06bf43acba6cc90a0c1416dcd"18446744073709551671 +040000005ebd1e59f92e83cd7a3fcb734a6b4cf1fbdb214d53f33a46b96f89b6b618c036eb541a5b909b23ffc64a66ab62c6e400f01ead3c29409398afb532fdd8d33c63493a8653ffff7f2003000000@1952eff1a1cc568e9f18ddba0a4d130c41c2247c83a9666cf5f823960922e589"18446744073709551671  -04000000cd6d41c1a090cca6cb3af46be06431415bcc39a6d222bfaab3991eefbd9be86e340293ec158884f28936847122a0ebd7226cb300b1778c0585e3bd368a96af3b05408653ffff7f20f2ffffef@28041ec175fee41e17afd4b273de1a45d38668b1d62c2163c3662865308da760"18446744073709551673 +0400000089e522099623f8f56c66a9837c24c2410c134d0abadd189f8e56cca1f1ef5219071c2450d0c064c31045f4633eb680cfd4cb19d73b10d77e5ac5c36e9baacde0a53c8653ffff7f20f2ffffef@4c15c7e2bc66831a54fffabf66533ea4955a4bc1470d134438787d884787d35e"18446744073709551673  -0400000060a78d30652866c363212cd6b16886d3451ade73b2d4af171ee4fe75c11e04283f5ae2143fe6ae4abab3e417abf26ce3cbdec642089d920017d64bab0f98929ec2418653ffff7f20f2ffffef@6f20634550c0779061277f37d6a04059096bbf3da6d13c844f6c24cd2b44d564"18446744073709551675 +040000005ed38747887d783844130d47c14b5a95a43e5366bffaff541a8366bce2c7154c3294f150efc978fdbae43b6f89255ea80fa4985536b849f4f930f51f7a8ade90233f8653ffff7f20f2ffffef@0dce67787d316ec184b538ae3093891b6f518a63d06fa642ff1b388a39c41715"18446744073709551675  -0400000064d5442bcd246c4f843cd1a63dbf6b095940a0d6377f27619077c0504563206fb56771a6c6a103642a3fdee9be76e9f1225696c69e0717c78a1fefc16cde7c627c448653ffff7f20f3ffffef@0fb4a0aa432bd08a13a5b0b35738c6ac1727c1fa2daae9cde2424274ef216c04"18446744073709551677 +040000001517c4398a381bff42a66fd0638a516f1b899330ae38b584c16e317d7867ce0d9c88d22df669112ad0be6e98fc4fd1d7b1d95d0dc578cc9a8793895edfc3999d14408653ffff7f20f3ffffef@4ac676b5020b4a050494ffed1e616406458d5ef5818bd96f209b0d265e6cebab"18446744073709551677  -04000000046c21ef744242e2cde9aa2dfac12717acc63857b3b0a5138ad02b43aaa0b40f43c63576874169c453f5a9fa392aef8f0515b14511a5732d7d1f0a9319cbde4737478653ffff7f20f7ffffef@6fbb5e5cab6a21979dc513b04712168f3883d84f7eed8c3d2ffcd57fe51c20fe "18446744073709551679 +04000000abeb6c5e260d9b206fd98b81f55e8d450664611eedff9404054a0b02b576c64a3a2c06aca28ea4006932fe3c369afd34e4cce14d5ef83cfab44b504d8eb2ba7569428653ffff7f20f2ffffef@0d648bcdb0f444d82772f8c9fd018e3b1843f4c4113521777789d2849e19fe90 "18446744073709551679  -04000000fe201ce57fd5fc2f3d8ced7e4fd883388f161247b013c59d97216aab5c5ebb6fe30b3e0c36e35b593ab805f8ab2a8c23a4c3b25751a3b00d178307f083077b72e8488653ffff7f20feffff2f@479ed545d7525f649687db073cf1858399b8e799a8c0ff30d73ff2add81310d7!"18446744073709551681 +0400000090fe199e84d2897777213511c4f443183b8e01fdc9f87227d844f4b0cd8b640d36d8870a5b9c1b40ca3724ca579a9d51e60ed36ef69da608e5fe1dd9a7f98c2bed448653ffff7f2001000000@5ebf25fe728fe32caaaeb33a579260f21847c2d98ba015b7513f802f073b82ea!"18446744073709551681  -04000000d71013d8adf23fd730ffc0a899e7b8998385f13c07db8796645f52d745d59e47d007fa996e854e776d81f3244acd7e7f23fe00c9c35dbb7a7f400e65443ab366224b8653ffff7f20f6ffffef@699087237bf129fc33024b6265fcb4fb5ad084aa1b7fc4e54ba1910280cbdda0""18446744073709551683 +04000000ea823b072f803f51b715a08bd9c24718f26092573ab3aeaa2ce38f72fe25bf5e37f420f5d0b5beac1a8551697a4a48f830636e52f7a512d401cfa6875489aabdb5478653ffff7f20f2ffffef@384ae4750b6840e7f878509ed6bc82923a401e55b647cba285c4a0cd1e50fca7""18446744073709551683  -04000000a0ddcb800291a14be5c47f1baa84d05afbb4fc65624b0233fc29f17b238790690e8155c071f5c4b96071bded41c9ac4619d7ae7c9ee107323e0859c527e650ef4a4c8653ffff7f20f2ffffef@6cf45719fc6c72a669a13ab300f6355f18dfb6f5e37a8f999d072c913ebb7577#"18446744073709551685 +04000000a7fc501ecda0c485a2cb47b6551e403a9282bcd69e5078f8e740680b75e44a38727647c7985f426498ea5fd06a47513a3f5e991c6c121e292c65fe0c3c8c4621d3488653ffff7f2001000030@3b6307f172b20697b8a0ed81847409b23d5758fbb9421e327d6d82d8a41c0b58#"18446744073709551685  -040000007775bb3e912c079d998f7ae3f5b6df185f35f600b33aa169a6726cfc1957f46c8c7861b4de1868fb849632f866cbcecb8d5e49602463ebad8daf247f6a2aebb4844d8653ffff7f20f2ffffef@38f94319491a53734956478277e86cf49e02cbe71a4a08973d89463875a81301$"18446744073709551687 +04000000580b1ca4d8826d7d321e42b9fb58573db209748481eda0b89706b272f107633bf70c51a1de5fd81d355fdb78c86a5066e3a3621c50632f4432cf2859d0c999d1bd4a8653ffff7f20ffffff1f@6dc440fc329efb80becab44b264c54941a0f73921cfaa87c06d6daebdf467db2$"18446744073709551687  -040000000113a8753846893d97084a1ae7cb029ef46ce8778247564973531a491943f9387ac932e4c539c3693fdf96b00bf3a3331d75447383db67293866b6c2a630898c414f8653ffff7f20f2ffffef@18edb8bbce8e5030f9f864e5443f4352d8ac71af93888c6211cb0eff419eea17%"18446744073709551689 +04000000b27d46dfebdad6067ca8fa1c92730f1a94544c264bb4cabe80fb9e32fc40c46d36c8b7d6e01dff48c720fcb52b7b6e6cb3187205dbbfc2b975f52f8b904d68e6274d8653ffff7f2001000000@241c5fd1556b591c9534273d584d0338e0f8ce99a53a55b6b93669f022911e1a%"18446744073709551689  -0400000017ea9e41ff0ecb11628c8893af71acd852433f44e564f8f930508ecebbb8ed18914e73dbcc155f396ea0a9b5ee4b23c78692804bb6ce223cfb746e23ccd2035eac508653ffff7f2001000000@171cb283caf2c1d4c2bc88ea37cac84d8659249f773fabe0f6c98d370764c256&"18446744073709551691 +040000001a1e9122f06936b9b6553aa599cef8e038034d583d2734951c596b55d15f1c24a18cd5e2614fbd60e1703e7da7403d45f9b5f04e57aef3ef8875d8e6ec374cba654e8653ffff7f2005000000@6ce19fe3323caea44d9c53e4b185df7948ed03db1c395be35aea396db3b0560f&"18446744073709551691  -0400000056c26407378dc9f6e0ab3f779f2459864dc8ca37ea88bcc2d4c1f2ca83b21c173acd9b3295e0fdfb35e6d5822d13a3c2635b33c74e39cea0c853361c21d0aca84d538653ffff7f2003000000@5bc7a68a8e71f5951f661b98a3824817746664421826443c0bf5a7745e6f78bd'"18446744073709551693 +040000000f56b0b36d39ea5ae35b391cdb03ed4879df85b1e4539c4da4ae3c32e39fe16c4a599e624ca4ff9feb763a057bab5c6fc35a77560559e1575ecd53d4b57daf6d11518653ffff7f20ffffff1f@509f6913ea134908803ae9474198f2cd60e7de856d4c766fb30bf7b257a18c57'"18446744073709551693  -04000000bd786f5e74a7f50b3c44261842646674174882a3981b661f95f5718e8aa6c75b52147f10ff2f946fa3b6a704738a2f7779a11bc390358233684c3962601861e3ca558653ffff7f20f2ffffef@3f3f80c93729d9931328584f66e8729c72d6e62db45611da9bda9376082f717d("18446744073709551695 +04000000578ca157b2f70bb36f764c6d85dee760cdf2984147e93a80084913ea13699f501c034c8943ce0b0855e9e14fcd3f6e8915a26c842df334f94dd3df0846ea94250c538653ffff7f20f3ffffef@6ee01cfad9229d95d4d53dbe3df9987dd88ca3fcadab81139aa17231c08e8b46("18446744073709551695  -040000007d712f087693da9bda1156b42de6d6729c72e8664f58281393d92937c9803f3f63b2e390838b6833eb9e18225fc45a0b06e6939074740110252b40995e0e03092b578653ffff7f20f2ffffef@100a739d2fabbc673f8f2c88aa49d24945421a59ffa269f03a59e0ff273adbf1)"18446744073709551697 +04000000468b8ec03172a19a1381abadfca38cd87d98f93dbe3dd5d4959d22d9fa1ce06e94bb1ae02da6dea2953ba72c43f9e2954c79d14561268d462d35248ac5ae7f5560548653ffff7f20f3ffffef@48dfa31bb1d833bb0dad591efbeb5e58351ec5c49617eebc33e7f050d55eff58)"18446744073709551697  -04000000f1db3a27ffe0593af069a2ff591a424549d249aa882c8f3f67bcab2f9d730a10affbf7bd9dcd482c9335684d40599f47e49a74ab81e19dd871bcc89c0f8cd7f34e598653ffff7f20f7ffff9f@3e1aafacbce378a1936299b0781ec861404687e0531d20932c59a6d50906b3de*"18446744073709551699 +0400000058ff5ed550f0e733bcee1796c4c51e35585eebfb1e59ad0dbb33d8b11ba3df48a842ffa379f019db4ddeb69a4d6ed24abc78212cefb93951f8ddf61964f83c9ac2568653ffff7f20f2ffffef@652a0345f3af7473c0a5f799995b15d1a68baf38a3c62f0821625bff5f2cfdaf*"18446744073709551699  -04000000deb30609d5a6592c93201d53e087464061c81e78b0996293a178e3bcacaf1a3e3e1d4a97b9a5635b01eb720d9f9dba5b3f2a0e296b2d9aa2da36e60f48b5b523595b8653ffff7f20f2ffffef@3e9258f632ce6507b1932d42f13aaa7c69d3fd688551cb1e59a8a93d7cbb5b35+"18446744073709551701 +04000000affd2c5fff5b6221082fc6a338af8ba6d1155b9999f7a5c07374aff345032a651789c33d0cb5f51b131fe3f6e40e475f364b18daae9bd357cd06658a66a177bb9a588653ffff7f20f9ffff7f@28c27779c6a6ce44b29fcbb2f6a1d11166dfb9324761b2b7428e7b793a707c01+"18446744073709551701  -04000000355bbb7c3da9a8591ecb518568fdd3697caa3af1422d93b10765ce32f658923ee0e7a68191220e3da1d6d216e3c018e81ee2aefcbc66b5a82c117419496f0e16105e8653ffff7f20f2ffffef@22ff6b870147ea4639579759d1c1d7e4c370f08a4304468e23e1c2af784b3e60,"18446744073709551703 +04000000017c703a797b8e42b7b2614732b9df6611d1a1f6b2cb9fb244cea6c67977c2288ff32c5c3acc6475b2e85d4de18c501a6142ad21400c90da2442dbf52e5793c896598653ffff7f20f7ffffef@4f33512dafbbb67039558fe5038a33d5b16b6028a94d5502bbe8bb4e1584d0ba,"18446744073709551703  -04000000603e4b78afc2e1238e4604438af070c3e4d7c1d15997573946ea4701876bff225ab9cc6c30ee010e1ba86ff6d51ef7a04ffcb116ab554e0ef104797bd33664130c5f8653ffff7f20f6ffffef@72dc44e34caee4a16487a410b820e3f1ce194b8d536ac5a55238806c86c18347-"18446744073709551705 +04000000bad084154ebbe8bb02554da928606bb1d5338a03e58f553970b6bbaf2d51334f518bf31df7f56f8bda5fd79db2fef4714182e5e5fbe694997addb49fc25c2f90fb5a8653ffff7f20feffff2f@229e079f55a5db76538b9ed0eb9cf555a2242cf548811fafef9d719d6ea5cab4-"18446744073709551705  -040000004783c1866c803852a5c56a538d4b19cef1e320b810a48764a1e4ae4ce344dc72d56344f02b24d25c62c7cb2b3ffcc38638f72b933221388ed3b4b0083dac661ab1608653ffff7f20f3ffffef@21b6a30abdcaf4043f8e48fe9fd6394a8356f5a0ee794e5ce0a7c6d66faef3c5."18446744073709551707 +04000000b4caa56e9d719defaf1f8148f52c24a255f59cebd09e8b5376dba5559f079e2287ff63291022e958b12f5460c40048c4814b1a011c41f3a9192684d1df5783dd1a5d8653ffff7f20ffffff1f@55ed696f170cae93529487549794ba21fc7d4ee1615b80fd456b9cb3a6e0fa1a."18446744073709551707  -04000000c5f3ae6fd6c6a7e05c4e79eea0f556834a39d69ffe488e3f04f4cabd0aa3b6211e58e57466052604e8309d2dd02347ed3fe6b200eb40c1d825e362fb1382461269638653ffff7f20fdffff3f@2d37c91a63abe6e729cc683c22d28ad4cd7fcfcdb7a4b261e557a2330aaad50f/"18446744073709551709 +040000001afae0a6b39c6b45fd805b61e14e7dfc21ba94975487945293ae0c176f69ed55d129fc23f2524f7829c9a92f7be4c55fd7ec18bc7fa16734ccc40cc80ab08e72795f8653ffff7f20fdffff3f@7316ba26a305c69d092e3e903e76689b099a5a4994ada4ec817f9552fc763dcc/"18446744073709551709  -040000000fd5aa0a33a257e561b2a4b7cdcf7fcdd48ad2223c68cc29e7e6ab631ac9372de783a29bc090e14f24d3472d06616c6f16b49ca85c63c0a73226d149a67a238e64648653ffff7f20f7ffffef@5ce91ee1a989ac25b4073f296a05007af7d3adf2c5951ba6ed69854f4b0ed4110"18446744073709551711 +04000000cc3d76fc52957f81eca4ad94495a9a099b68763e903e2e099dc605a326ba1673fb812aaba13fc10c59778ea9ae06dcfdb823635c38d8543dde467a6ebb1d9fb2f1608653ffff7f20f3ffffef@3117453181b8bd5136603657ed55cc5d8db191b8fa1d6b063faebd6b2b6566c30"18446744073709551711  -0400000011d40e4b4f8569eda61b95c5f2add3f77a00056a293f07b425ac89a9e11ee95cbd196a1623e4c0573b2be528357249beb7bab5f9604c97ee33e117bafda41b52aa658653ffff7f20f3ffffef@5747fea34e988ff287702283b1b4dd5af9877b36412a0c8408ff589ee7e733a41"18446744073709551713 +04000000c366652b6bbdae3f066b1dfab891b18d5dcc55ed5736603651bdb88131451731fefe64cd031b4ed8fbdb820a0397975b1f2af9f16cb510fdb94059c421d39b343d638653ffff7f2000000010@01ccd4c3f0eea061efb580943cab450b751bc378172c31910e52353cdcf00ed51"18446744073709551713  -04000000a433e7e79e58ff08840c2a41367b87f95addb4b183227087f28f984ea3fe4757e1ef25bc44686a3346de1146c1bd2a25fb8d8a62f567ef01fd13e3d7674456d85a678653ffff7f20f5ffffef@4fa5c660a650e14d7f544076a5cca5931c62ac4a7bfacf9e1d42b6c05b6bdbce2"18446744073709551715 +04000000d50ef0dc3c35520e91312c1778c31b750b45ab3c9480b5ef61a0eef0c3d4cc01ec32f3f0532ca6a92214fb88f990e94941fb74c147554233738ba2a93756026b79658653ffff7f20f2ffffef@15ede1e4bd99a915e380912ae013980555248a78d1d8115eea2620a2c82b4d102"18446744073709551715  -04000000cedb6b5bc0b6421d9ecffa7b4aac621c93a5cca57640547f4de150a660c6a54f85e16c7201274880d63a79f610712b49357f9d5227e3b238690053f038fa8b3e52698653ffff7f2002000000@7e32a35129bc126674963424f99141ba8c6278d47485f8c733509d1a1f071a263"18446744073709551717 +04000000104d2bc8a22026ea5e11d8d1788a2455059813e02a9180e315a999bde4e1ed1597206a8e4a98dbe757b767ac8701a9898e1a3ebb2162b664239034b3d1c7346375678653ffff7f20f4ffffef@3c771dd18323e3f826ca0dc1771148536c4c524ef6f250f2927da5074652144b3"18446744073709551717  -04000000261a071f1a9d5033c7f88574d478628cba4191f9243496746612bc2951a3327e02d297387378031cdb965ec846aa4e4316410eb5132e76d49d488be6800830cd256b8653ffff7f20f2ffffef@33f3600146e0030ce2002680fee240da9ec93a59465619f5237b570e74cf4fe64"18446744073709551719 +040000004b14524607a57d92f250f2f64e524c6c53481177c10dca26f8e32383d11d773c17fb32de93d9a390596e50c947c0034532bfaa2d12c976b3e8285968507a45919f688653ffff7f20feffff2f@5b6c90a5993782e32849fbdcfa4e1019c8e71d595809b9bd2963a6ae16770a354"18446744073709551719  -04000000e64fcf740e577b23f5195646593ac99eda40e2fe802600e20c03e0460160f33342c2df342be1ef18583d862d3005b0eb2d0c1b9054cfc053939baa833e585afb1a6c8653ffff7f20f3ffffef@39c72b1d2492d23a3adfb1aab42fff4a50d17f8ab62d0ae58e36d49cfb9557b95"18446744073709551721 +04000000350a7716aea66329bdb90958591de7c819104efadcfb4928e3823799a5906c5b7086e49c6cff02bc1bfeb0431cf5a1c2172caa5cc06ba30f2c67084ac40cc4e60b6b8653ffff7f20f2ffffef@28ab37ff880284fa5932d82f6aa5ccb0602762f658846a1887d2ef29e099a94d5"18446744073709551721  -04000000b95795fb9cd4368ee50a2db68a7fd1504aff2fb4aab1df3a3ad292241d2bc739b56a970087fc4920542125d55bbaf08ca6c456be1f5ca4a85cd7b4e698f495283e6e8653ffff7f20f5ffffef@07f747046f77924c7197064c89d5097691eeaa236f29f0f9c1d68714827ecf2b6"18446744073709551723 +040000004da999e029efd287186a8458f6622760b0cca56a2fd83259fa840288ff37ab288e5875dcc6bf124570e40c3058e64d6833e7af94cde36e560e112be9e7aa2c43b26d8653ffff7f20feffff2f@0fee2aea61e260649c54aff2081099a4441f85d64eed4733064e5e671a9b34566"18446744073709551723  -040000002bcf7e821487d6c1f9f0296f23aaee917609d5894c0697714c92776f0447f707d77a1f2b305f55060a850128a87c46c1ad5be1b579266d62cf2f7c23db95d1374f6f8653ffff7f20f2ffffef@780fd143db3e924d681da2f161e32a3083203b82f6a01d2f5d2586511c1cf58c7"18446744073709551725 +0400000056349b1a675e4e063347ed4ed6851f44a4991008f2af549c6460e261ea2aee0f1168789c04b6ebf9051b0c1180b9bacdc9a4df49d8aceb37e91d0852d4aebe71d16f8653ffff7f20f2ffffef@278118fe6760a9d7e56d5a7f388645baa9deacad2acc8aa0e434c298aa3326467"18446744073709551725  -040000008cf51c1c5186255d2f1da0f6823b2083302ae361f1a21d684d923edb43d10f7899642a6a570352f4647ab209cd212d5427d17cdf6c332a65d524842112509bdc38718653ffff7f20f2ffffef@6467334c0b9b34bda5bf4196f92b8a22ee2993db8d7d356e79ef1df2486e393c8"18446744073709551727 +04000000462633aa98c234e4a08acc2aadacdea9ba4586387f5a6de5d7a96067fe188127c1f53307679d22e8270e3b63db7316b1a6e937c3754648078ae973561e865ff0b5718653ffff7f20fbffff6f@2b6259eb6a081c886d78bc330381c3a3b3935e0f4350987f0cc6ab3c3117feb08"18446744073709551727  -040000003c396e48f21def796e357d8ddb9329ee228a2bf99641bfa5bd349b0b4c3367646d89ed576bb14862a4eb29c1c81371618cb7de703172073880fc7923496db6920d738653ffff7f2005000000@533324d797a99144eefb19c51da7932d9d128fce5d8d8850f15a3557e5cc4fca9"18446744073709551729 +04000000b0fe17313cabc60c7f9850430f5e93b3a3c3810333bc786d881c086aeb59622b78e0d65bae854dd07058e4881d5b2c48decc48659ae7b6ff17efb12b52a4973938738653ffff7f2004000000@497c8a227443eb4b4061ffb9407f4c20fc08f7abe9b75e61809e90c2fb3c23019"18446744073709551729  -04000000ca4fcce557355af150888d5dce8f129d2d93a71dc519fbee4491a997d7243353a089c5dee289ee746665ec374730b3ac05bbb01cfd278a9b41a43f3a7fa93f3735748653ffff7f2000000010@528499695a329b46ee472c43dbf581c9ec962cfd3151e78615b83bd06902877b:"18446744073709551731 +0400000001233cfbc2909e80615eb7e9abf708fc204c7f40b9ff61404beb4374228a7c49827ccf16e3016b5af3cb7a519a899ff860054bf6368aea32d00d90594fa41578a3758653ffff7f20fdffff3f@5b77da42d9a576e8c8610053e2cf41de02e34b31e7333bcd6c29346f6226f9e5:"18446744073709551731  -040000007b870269d03bb81586e75131fd2c96ecc981f5db432c47ee469b325a6999845275081a225f818ee1d7a4dab203600a7b07fe198cf3a16fc853cab2dbbc920d6627758653ffff7f20f3ffffef@47d7520aaa3ed467ca3e8a28d341bfa028cef942a45522d5e289146685806638;"18446744073709551733 +04000000e5f926626f34296ccd3b33e7314be302de41cfe2530061c8e876a5d942da775bb870fb2b7924cde633ee1dcee4564ea6a3c0ffd42b38d74f6d63e9c9069b6b9046778653ffff7f2002000000@5f27a91bdae788f9e9a2690dd3ac8432245031a66fa881f49041469674f2c939;"18446744073709551733  -0400000038668085661489e2d52255a442f9ce28a0bf41d3288a3eca67d43eaa0a52d747cba9bffcf5f1417d406adba6660f36d7a7c8af349cca604f4dc6a66558682255da768653ffff7f20faffff6f@0d43f51073f106ffb3b210914981d06fe68dc1fe1f7eaa00d2fbc5eef8008b5b<"18446744073709551735 +0400000039c9f27496464190f481a86fa63150243284acd30d69a2e9f988e7da1ba9275f50ed5c773bd460d725aa5cc3bcbc3196471de7745c5439ae5759afbbde2b47c5047a8653ffff7f2001000010@7b5609a852860914a77bfcd757eda3ce75556fa3469b774d8f68ea2aad695f1f<"18446744073709551735  -040000005b8b00f8eec5fbd200aa7e1ffec18de66fd081499110b2b3ff06f17310f5430d032a376b3bb40b0a176ce6fdeac0003daf06e2426127b2ba9474578fe85c87bab6788653ffff7f20f2ffffef@4de3594f1a5f2fac53aa8e040b54f1b39815d437ab46b703ad3736eb157e4993="18446744073709551737 +040000001f5f69ad2aea688f4d779b46a36f5575cea3ed57d7fc7ba714098652a809567b3c49c16d9bda2f5f8f2389a4a4a5593c40a5005a1298bed333bf88ce4fbdec55787c8653ffff7f20ffffff1f@13d213d4d0a2e13504e1a589727ca9070ab0876b7a686e0ec893cb480507222b="18446744073709551737  -0400000093497e15eb3637ad03b746ab37d41598b3f1540b048eaa53ac2f5f1a4f59e34d9fc27e312cc43a1525528f32d3fdaa4bb81219fc265ff530f2a6063cd5291284dc7a8653ffff7f20f2ffffef@4a09f9b4a612b713e085a6156b3b46b5370b2aef8070976d2dbd9c6adad81a76>"18446744073709551739 +040000002b22070548cb93c80e6e687a6b87b00a07a97c7289a5e10435e1a2d0d413d21388efb780d6152fd40b63a0b0e999013991dfab4c75cfdd1d64d3c30757b4dc2b857e8653ffff7f20fdffff3f@25a16f820d5dd1e379bb9f30e60728e8020464a21adeafd1e5472ec830f59a8a>"18446744073709551739  -04000000761ad8da6a9cbd2d6d977080ef2a0b37b5463b6b15a685e013b712a6b4f9094aae61747811649464e09d9512ede8147fa273b550a2e52259c87e7131b653890b957d8653ffff7f20f3ffffef@7fe5d02839ba0e645f77fa08ce4d61abe5acc793501322d80532de8a2d8f7c37?"18446744073709551741 +040000008a9af530c82e47e5d1afde1aa2640402e82807e6309fbb79e3d15d0d826fa125310fc157b5f173c8dbbccc2cea2cdd0ea56648e91f63b30b211e74196c4d7a965c808653ffff7f2005000000@36f0b93a69db5885a329943da924dc518ebd5aa707f5871dfeca13e149195d35?"18446744073709551741  -04000000377c8f2d8ade3205d822135093c7ace5ab614dce08fa775f640eba3928d0e57f9184501671c4f56d1145d612b7e5aa54dbecc33a87c1ecca971830fc20f8c5354b7f8653ffff7f20fcffff6f@76682e09c416602b8dd6fc686defef76c7959b5cf5e5bcb343a553cb539a44ef@"18446744073709551743 +04000000355d1949e113cafe1d87f507a75abd8e51dc24a93d9429a38558db693ab9f03686487d2f66709332543b98e33c2b17f9021c4785d0aba72430c670d198c2730a30828653ffff7f20f3ffffef@4133e8dca9b7d63c3a3a7b7c54d9660ebe3d7866b29bd9f526f44fcf04b25a4f@"18446744073709551743  -04000000ef449a53cb53a543b3bce5f55c9b95c776efef6d68fcd68d2b6016c4092e68765be8b7439021a9377208796551f707984f8dc7d5a60fdc80561c568426f2f3e29d818653ffff7f2001000000@38c27f961dc29008500f310ceaaf090822ac412adb18948937d44d1b689f3cf2A"18446744073709551745 +040000004f5ab204cf4ff426f5d99bb266783dbe0e66d9547c7b3a3a3cd6b7a9dce833416818b39a8c8409ecd45cd34e7d7dfae46cabf311e481b0c1f15dcf491b7ecf9cf3848653ffff7f20fcffff4f@3ba0be7eac64c9bc4b7717c36002ff0c582a3c6261b6916d3d2578e5a449c9caA"18446744073709551745  -04000000f23c9f681b4dd437899418db2a41ac220809afea0c310f500890c21d967fc2380a191788cedfcd059f3dc97bb063b0f0be31732546293d1d6e738c9b9da7256f9d828653ffff7f20f4ffffef@2edfe94593bdf78fcb0dc412c4a006de0da73a93c67a5759a9dd401de4be500bB"18446744073709551747 +04000000cac949a4e578253d6d91b661623c2a580cff0260c317774bbcc964ac7ebea03bcc2be4083d6c859fed332a1ee5b7528c588ffc9fb5fd1d6299e1924c31687b8fff868653ffff7f20fdffff3f@34f660202bd5b75f90812db50ce2a35fe90eaa97934ea96be091195b0b8eb6a7B"18446744073709551747  -040000000b50bee41d40dda959577ac6933aa70dde06a0c412c40dcb8ff7bd9345e9df2eaece1e8bc3425fd1f8c9d95f72be720bf9167de38507487989afca85d11143f203858653ffff7f20f2ffffef@49ba2baa1ebc37a7edb840b262488aca121c66a08f1ea26190af1b0931fc8810C"18446744073709551749 +04000000a7b68e0b5b1991e06ba94e9397aa0ee95fa3e20cb52d81905fb7d52b2060f634143b933ef7b6c5c7fd46f494a4db18d257cd414a384ac21c3895fec27cae1be58c898653ffff7f20f2ffffef@04f4ac9c4274594ad881a72c2def649736adcd6982c54fe5d0804826887594a3C"18446744073709551749  -040000001088fc31091baf9061a21e8fa0661c12ca8a4862b240b8eda737bc1eaa2bba49f14cf09ad9325092b4fa467d9956d53b8b40744be608500b184a39c1b323329d71868653ffff7f20f2ffffef@43f432459f40758a0a70e9a23ec188826d4539a0385acdf92190a41839f2e5b0D"18446744073709551751 +04000000a3947588264880d0e54fc58269cdad369764ef2d2ca781d84a5974429cacf404ab6f0c75c9fdcbfef5ff50ea0ed78a26a5dab3f71bb3f1e68cfdd552c3750dd5918a8653ffff7f20fdffff3f@07678db3e3a35840016c6d78872a96da249935a41a242f2892b6b06929f4a0edD"18446744073709551751  -04000000b0e5f23918a49021f9cd5a38a039456d8288c13ea2e9700a8a75409f4532f44331c765c63a293b9005089b20e1a1ed8bdc1867dc2313c47095e99678f8e1a7883a888653ffff7f20f5ffffef@7b28b65defd56185629daf244d33c44a58d2d54320514c6963cf4ad7134c5df5E"18446744073709551753 +04000000eda0f42969b0b692282f241aa4359924da962a87786d6c014058a3e3b38d67073f3040b2d84f115c6dbcb50b63b37469fe023456438384d7fc14d9152558bc71158c8653ffff7f20f2ffffef@71cf7509d3ab657e2115240f40108e1151fcf7a2ceffb3754bd1e8b4ef90b5c9E"18446744073709551753  -04000000f55d4c13d74acf63694c512043d5d2584ac4334d24af9d628561d5ef5db6287b6ac469c818e6b4a57a01035496e7578c9f544e188e2c07942608c6bc12dc6c58ab898653ffff7f20f3ffffef@1f27551fc28b568c47a34a93defa288f7d8a88ee8f71a3458cbf721e23c1e346F"18446744073709551755 +04000000c9b590efb4e8d14b75b3ffcea2f7fc51118e10400f2415217e65abd30975cf7186d64a4e93f899e490c2e3cdaccd1a8b458a46484b7246f3bb8ef44c8f8a5cee418e8653ffff7f20ffffff1f@1a37bf455081c5d6a25c1ed9541217a061d5687f673cbac9033f7f68f3dfc7eaF"18446744073709551755  -0400000046e3c1231e72bf8c45a3718fee888a7d8f28fade934aa3478c568bc21f55271f7670aad15146d1cd7163db4513dba4cb4985a2fb96bfb12822fa8c2de0e12785748c8653ffff7f20f2ffffef@1bc1736367bb215651336c01e3a457ca87505e27d90b1cf126d91beb27c904a3G"18446744073709551757 +04000000eac7dff3687f3f03c9ba3c677f68d561a0171254d91e5ca2d6c5815045bf371aaeab9bd7f435ee61d7becfcc18d3a53a9bf1a3515a919a8d396ec4a0b7bd16defd908653ffff7f2002000010@4ee58157857a84ee7e7353536723a41cf7528d0fcf8241ee9d6ea3638359f5d5G"18446744073709551757  -04000000a304c927eb1bd926f11c0bd9275e5087ca57a4e3016c33515621bb676373c11ba461ac3450794083509d165ff571b34eb737aecb4b7301256218a3d4b0113ee1648e8653ffff7f2002000000@285cfdfae7a089832907e5d239557ca412b58414656328191c7f6e574d1c5e4eH"18446744073709551759 +04000000d5f5598363a36e9dee4182cf0f8d52f71ca423675353737eee847a855781e54e25096d98f3d3618331f27b4475f5ed9ba0ff1b9bebb082704b17b5c698d0e68a00938653ffff7f2001000000@3221dc4a2a862e88265478ca1ad07dd0c6dfdacd4a28fecf877bb3972fa064a4H"18446744073709551759  -040000004e5e1c4d576e7f1c192863651484b512a47c5539d2e507298389a0e7fafd5c288719c4985a31830f6b61ecd62eadbea1a73db113194f547d39d9f49117cfde4230908653ffff7f20f2ffffef@700ab6c9398642ff5ee0d19c33991964d9b732435457a48afd2fb39ba70df865I"18446744073709551761 +04000000a464a02f97b37b87cffe284acddadfc6d07dd01aca785426882e862a4adc2132358d9df8b540a12d903f8cf569f0a0dfd08430829ac7986b4ed3b6a5b7a2b3d175958653ffff7f20fcffff4f@6fff55bcf80bc9e85bc67821ab2acfd66d91e1020b1e4fed02459947c5ba2130I"18446744073709551761  -0400000065f80da79bb32ffd8aa457544332b7d9641999339cd1e05eff428639c9b60a703cccc79f9271c326adb2bfb43098c2f45b46d2dc0d964ac28f8a88244bcdd9909b918653ffff7f20f4ffffef@2f300be7cc1ad5980d59bee8d1cb513df41d48308e69dbc5a06c665b25307508J"18446744073709551763 +040000003021bac547994502ed4f1e0b02e1916dd6cf2aab2178c65be8c90bf8bc55ff6f0ce6ca4380b114a640fb05841f53e4baba14fd6194ceb6c89213f5eb56984e1ece978653ffff7f2000000010@40b468da78e99213064e6c5c4531e8fd3db4024f98662d448b239243fdbdbb51J"18446744073709551763  -04000000087530255b666ca0c5db698e30481df43d51cbd1e8be590d98d51acce70b302ffd731893f382250765fccf6748278f44c4f3dab75d719f0d851d29332bbc3c1018938653ffff7f20f2ffffef@28faeec6f8aadef52ccbeb351271d45629b9fd9fe4012d3b681f0ddfb9021cd2K"18446744073709551765 +0400000051bbbdfd4392238b442d66984f02b43dfde831455c6c4e061392e978da68b440805ab7a00a645eb9723786b460446f2958081ecf9504bee6f1411e6adc08e441f0998653ffff7f20feffff2f@6833ebc9a2f857377c595c9ac43d13ec4f4e1fb3ec96425365e85fdaab6c3f0cK"18446744073709551765  -04000000d21c02b9df0d1f683b2d01e49ffdb92956d4711235ebcb2cf5deaaf8c6eefa28127ecf0dae2f441c603db7e3c4068269045294607213e18acc9d4a77b81e15c221958653ffff7f20f2ffffef@78473d17ae9e263039b33af90e7f4ce6d5e3116676103676bb71dcae53bcb949L"18446744073709551767 +040000000c3f6cabda5fe865534296ecb31f4e4fec133dc49a5c597c3757f8a2c9eb33681881fb3bc0a974f69821eeef27db6146108bb6d13536e6eeac5f2ecd8dd1ee0ce19b8653ffff7f2004000030@29981a1afde5845ea46943b2f4860bbc25bb70ba96a33a6a2b4cc786ae0f2a5cL"18446744073709551767  -0400000049b9bc53aedc71bb763610766611e3d5e64c7f0ef93ab33930269eae173d4778911729881e7acb3208b3f1097c0650213cf9249eaff313eb78c14fa10146be96e0978653ffff7f20f2ffffef@14b66f1dc072715e50947e2d3f238486c9c044296cdf5f008fdbaa0c4a34735aM"18446744073709551769 +040000005c2a0fae86c74c2b6a3aa396ba70bb25bc0b86f4b24369a45e84e5fd1a1a98291edd4dd796a4d2b8e84e25a683e5657fa9f9dea021dffed367b4df77312a50d0d79d8653ffff7f20f2ffffef@53464b4917b35eaf3af5347e13c61f5715f431ebd6d28115f38de6f77d2f140bM"18446744073709551769  -040000005a73344a0caadb8f005fdf6c2944c0c98684233f2d7e94505e7172c01d6fb614c5bee230259d1f90874bcc06acede61eaf04039d28c78935893d30da02b9a0cc42998653ffff7f20f2ffffef@7b440090f19fca17f9119dc34e66c5d229a4aea5688dbb2219c3bada2c17b754N"18446744073709551771 +040000000b142f7df7e68df31581d2d6eb31f415571fc6137e34f53aaf5eb317494b4653f9d98f5e5e5697739576e35a04e6dbaa42fc45fdc9426ce8baec0aabc6087c7d779f8653ffff7f20f2ffffef@158b948f74f91dd92758c6469a04e41954e2df8753e357f8cb306b136c09e03bN"18446744073709551771  -0400000054b7172cdabac31922bb8d68a5aea429d2c5664ec39d11f917ca9ff19000447b5943c9498be75e4a105fbb07dd549536e8c8d8ec1c5a3b521513c525dcb2c794b79a8653ffff7f2003000000@4a345b32d5ee1e3c5eaba32831b493651c829e6b7a4efeeaa2293037c4ec47d5O"18446744073709551773 +040000003be0096c136b30cbf857e35387dfe25419e4049a46c65827d91df9748f948b158627c2db544852d6984581abf0dba56439fa21159431efffb3aeb6763b5ca3a93fa18653ffff7f20f4ffffef@5f2641148ab707c2477e09414e03b6bc0bde044640c0ed64ca9fd36c0933f8dcO"18446744073709551773  -04000000d547ecc4373029a2eafe4e7a6b9e821c6593b43128a3ab5e3c1eeed5325b344a6ffb5e04beafa77351b2dbbc9c94a67a4b5b90cf2595ac13eca44d31ac6a6980c19c8653ffff7f20f4ffffef@51fc49395325b74457b301bfabe6d0458b68c1743967fc099425a848cec919e5P"18446744073709551775 +04000000dcf833096cd39fca64edc0404604de0bbcb6034e41097e47c207b78a1441265f96d799299dd9d390e6e337d508c1ed5c511a61128a9a78882b11214489141ead46a28653ffff7f20feffff2f@373bc542a4b82b40521a2a7e70ded721d672b53b6bfc5324055a3086ff25655aP"18446744073709551775  -04000000e519c9ce48a8259409fc673974c1688b45d0e6abbf01b35744b725533949fc51822ca97522a4a4b05ae4d7a5fad20cf1830888944bf6a4d864f69f747652e4a2fe9e8653ffff7f20f2ffffef@439c927f4367d52ce3b31f660f41590ea9dd497bfbf2f5ddabece7ec1b73298bQ"18446744073709551777 +040000005a6525ff86305a052453fc6b3bb572d621d7de707e2a1a52402bb8a442c53b37634710077e3899cd80460dbc54d17bacedaa7e61af2cf2e48b52772ad1b6cb1e44a48653ffff7f20ffffff1f@6e22a67ffbd39268b2a64b266f1b57e6d7f2fab8e64069512eb4fab63323b9e4Q"18446744073709551777  -040000008b29731bece7ecabddf5f2fb7b49dda90e59410f661fb3e32cd567437f929c43893f702a28c9d830cd567efc43f681fd4b8befb6e242a47d625ca42f486f4e9939a08653ffff7f20f2ffffef@47b7d818d625146423aa4988f0255ff78cbb887b00368549cc97b3c4e12a8859R"18446744073709551779 +04000000e4b92333b6fab42e516940e6b8faf2d7e6571b6f264ba6b26892d3fb7fa6226e7dd8629a44427db96a0a2ed56f3aa42e91bf5c6f138c10d15bda9b0e0124dbf274a68653ffff7f2002000000@01f7b8b15883a043491fc9c288a8b0a5b209ebe967fb839bacd27fda17823742R"18446744073709551779  -0400000059882ae1c4b397cc498536007b88bb8cf75f25f08849aa23641425d618d8b747b87bf37a0aac59acf1e3b0e9701cbc9f0a523e374d6461e2c15b6ef415b3618c22a28653ffff7f20f8ffffef@6a85c0c61e555b8ae9f7046aff4d3aa43bbaa116adc7eb4797c36ff33d201b33S"18446744073709551781 +0400000042378217da7fd2ac9b83fb67e9eb09b2a5b0a888c2c91f4943a08358b1b8f70180a1160cfa4a3d5c15895f6f16b6dc37aed728e7fe3d7e48b56e9cf1d71d7b1b26a98653ffff7f20fdffff3f@0528706ff38951336712d03986bc2779cb1c2c68df4263cb9f948aaf6a448d95S"18446744073709551781  -04000000331b203df36fc39747ebc7ad16a1ba3ba43a4dff6a04f7e98a5b551ec6c0856ac8e61f7242fb2b1c414621637d4af6de190ca46e4c7d9c5df8f74776197cf1b32fa38653ffff7f20faffffef@3e8ebe3f4868cb1345de6f97fb384a39faf64003ce85959b3a6b91bdb6058e0fT"18446744073709551783 +04000000958d446aaf8a949fcb6342df682c1ccb7927bc8639d01267335189f36f702805ae02eff92e5c1a928c5b138ffb7ad40865900f8b30f7108d56bfeaaa63571ef6e2aa8653ffff7f20f2ffffef@29654edf6e89b1d2bb85187345db88bb35a526e9b60997192d5efb7606cc7340T"18446744073709551783  -040000000f8e05b6bd916b3a9b9585ce0340f6fa394a38fb976fde4513cb68483fbe8e3e5823dc6be589aac3fae4571f903aeb41f8d01020507fb50f732613b7d8fd66f858a48653ffff7f20f4ffffef@725d82b6d29c109be459f6e6117390b068e6b760bc531f21c764ce1d0d061559U"18446744073709551785 +040000004073cc0676fb5e2d199709b6e926a535bb88db45731885bbd2b1896edf4e65292dde3e7fbbe84016fb6646e0b359fc2a506a40725ab42d3f188ca6f33a019bc25aad8653ffff7f20f3ffffef@3e4f6c753a0e31df52f1ebf50a19dd6d44289e02d6919deecc41c2a2ee6e2582U"18446744073709551785  -040000005915060d1dce64c7211f53bc60b7e668b0907311e6f659e49b109cd2b6825d7231e58d9c865ba9c25e05b52c4ce470ed65b7aca85585815585dd5931d834b24755a68653ffff7f20f2ffffef@7648dcda89941e24230dc7c0ccb8862f2f900efcad0cbf81ffb5a85814d30d9eV"18446744073709551787 +0400000082256eeea2c241ccee9d91d6029e28446ddd190af5ebf152df310e3a756c4f3e04badcc19668876a8f6d340fd3a3a5175287698bf165eac0eb2cf3c0ed9af0a487af8653ffff7f20ffffff3f@3607fe9ec46c1946f591eda86d0b40806fc143ca72fd5c6fb722d9e37cc1c310V"18446744073709551787  -040000009e0dd31458a8b5ff81bf0cadfc0e902f2f86b8ccc0c70d23241e9489dadc4876ae8d5e5831ce8982a472f174be4634eb86f096bec85069deda1bab712a77589befa78653ffff7f20f2ffffef@46bd545c7e31eb10f9fff5c358cf10e171999e8e859a2a2294c6312cd86421ceW"18446744073709551789 +0400000010c3c17ce3d922b76f5cfd72ca43c16f80400b6da8ed91f546196cc49efe0736842cb236de8baa22f60d9150c300ba3d632de7ac9e4974199bda1c7b070af78871b18653ffff7f2004000000@2f0fede0c20eee0d829b4e287291d2ce44cc1f726c127cc68a3d2b802b297616W"18446744073709551789  -04000000ce2164d82c31c694222a9a858e9e9971e110cf58c3f5fff910eb317e5c54bd461d7628f6210eee979a3b5dfa2616a419515cd8187671d7430cb5c88bda131714b1aa8653ffff7f20f2ffffef@4bc77acdba7402280ecab34c6d48175dddf1baf2eface8080e6c72dd3110827dX"18446744073709551791 +040000001676292b802b3d8ac67c126c721fcc44ced29172284e9b820dee0ec2e0ed0f2f29d327df08c873e215113f3a172d6d13467addc469f0b083bbd897146007df648eb38653ffff7f20ffffff1f@11c9c64e5b39c8bd102f4f91c36ef3153e1cc0689c1440a152dc41421e82fa9fX"18446744073709551791  -040000007d821031dd726c0e08e8aceff2baf1dd5d17486d4cb3ca0e280274bacd7ac74b9973ccec7742e1f7b9313ec1fe01dd1ca9356c09033fb4648a9832e5b3e59fd3f2ab8653ffff7f20f3ffffef@2a499213f8fd1a1e179ac0208ff93f9b790daa72bc96db5b90bcb6199b4f6221Y"18446744073709551793 +040000009ffa821e4241dc52a140149c68c01c3e15f36ec3914f2f10bdc8395b4ec6c9111765bc49f39afcf5deeeaf8f26b1d6d2380c8d99ebba1272e2d948f7fec64e3e42b58653ffff7f20fcffff4f@6bcb8d583e83b5f3c43c1ddde51aac581c47c722db3ac620aae8bffa510f6c94Y"18446744073709551793  -0400000021624f9b19b6bc905bdb96bc72aa0d799b3ff98f20c09a171e1afdf81392492a52b20d7e2ee5e822deeef2b259c0eeae7c17c7e74d18f48f4e8ee2a5fe6f729f8ead8653ffff7f20f2ffffef@3cbb59311028c2653f16057db6cb51789d70f413d3386fb3f1f41c7630d5aad2Z"18446744073709551795 +04000000946c0f51fabfe8aa20c63adb22c7471c58ac1ae5dd1d3cc4f3b5833e588dcb6bc992814a7cef0d4b000fab73910769249ea517cb48f7e7e79d9d2fdaff125d24a8b78653ffff7f20f3ffffef@16576a1fc5a7e58dff223fc8c9b7c2611c6157d2f9444df53db799e295877dffZ"18446744073709551795  -04000000d2aad530761cf4f1b36f38d313f4709d7851cbb67d05163f65c228103159bb3c14ab68b713afacbb6bd7f3134eebefae238c6871c7aea8a7f1d8cc69c719201c2faf8653ffff7f20f2ffffef@110346a35907d09cbd1e5087adf4d653f059247495cdaa2bda107d67d6e29a94["18446744073709551797 +04000000ff7d8795e299b73df54d44f9d257611c61c2b7c9c83f22ff8de5a7c51f6a5716941c1cd54b03799eb636ea5a0068e0ff4e73cb6411ff53fae837659fca83ba27f9b98653ffff7f20f2ffffef@7876c6e48cc61455c347d1fc1e635451643864eeee144b1af5855e0251f41481["18446744073709551797  -04000000949ae2d6677d10da2baacd95742459f053d6f4ad87501ebd9cd00759a346031174c2f98916e9902a8e6999a62989679c52454f23c9d15c4842be11e523f62b073ab08653ffff7f20f7ffffef@480b7d14025c62f00855e30b4340913cffa61c78d0096805c9b91442f568fc2c\"18446744073709551799 +040000008114f451025e85f51a4b14eeee6438645154631efcd147c35514c68ce4c676780f32128702a742b45a2818f074cf9301512a5fa614ccc2fd9f05d2cebee9c87352bb8653ffff7f20fdffff3f@056c0940dcc73601d1d66d83f43707bebe1dab06f76ce8828ae95fed465caf28\"18446744073709551799  -040000002cfc68f54214b9c9056809d0781ca6ff3c9140430be35508f0625c02147d0b488054ef953c3153c7ace3d6b98ec4f0180b961aab732df4266c73fc6fdc089a1e6cb18653ffff7f20f2ffffef@6c97d4f644b3223e73081ff3dba94a9b44ab67de02aa9f0507c42da4e9b977d3]"18446744073709551801 +0400000028af5c46ed5fe98a82e86cf706ab1dbebe0737f4836dd6d10136c7dc40096c05449701f9ddb4a04ed22f4701919dc958c17eaf9df351edb3a857f48692f97bb3efbd8653ffff7f2001000000@6d4bce5a2382fc13932b181d1c53de90384e0e4485b741147ca061efa67434e3]"18446744073709551801  -04000000d377b9e9a42dc407059faa02de67ab449b4aa9dbf31f08733e22b344f6d4976c72accf1ab197ffa289a4f14d21a709a58f7618bc89a464b4ec21958b0481c89d22b38653ffff7f20f3ffffef@227473a9ca5b7de8d6fa1195e3bc999e2eaa15d554d637cf0ea81b8f52d6763b^"18446744073709551803 +04000000e33474a6ef61a07c1441b785440e4e3890de531c1d182b9313fc82235ace4b6d504d1c9c66b37ad4618b0dc4a00cd3b80b26da5f8ab871fb5ddc4b79dc53e8a78fbf8653ffff7f2001000000@24759e254bb77826483076d033124ad73d9b14bf14cf967d2630dd64aa498e96^"18446744073709551803  -040000003b76d6528f1ba80ecf37d654d515aa2e9e99bce39511fad6e87d5bcaa9737422f48e035911a0d39ad04e48510f5d52433f3fb203c67ada75a779295f3a6bae57f4b48653ffff7f20f2ffffef@0533575b43ef2e3dcf68bfc05374e6a55bf855f81c564557246b7e6ab35c7215_"18446744073709551805 +04000000968e49aa64dd30267d96cf14bf149b3dd74a1233d07630482678b74b259e7524fa6a07c2ebeaf97929a554c750a84f2c6e509537b8755f7ce2aaf014a38f09389cc18653ffff7f20f2ffffef@5fa821fc183b2b4fbf8e744ec936f6a11a5444fbaa44f004a5a451da477b9fe7_"18446744073709551805  -0400000015725cb36a7e6b245745561cf855f85ba5e67453c0bf68cf3d2eef435b573305d101c6e4df5fdee8ce7e73dfce9a2aded31cf965a7d0574f49ea7a78f30c53825ab78653ffff7f20fdffff3f@515ad59b2b5099795da35961c51308e8f1d9cf79df2e2c07b98e24dbcafa06f4`"18446744073709551807 +04000000e79f7b47da51a4a504f044aafb44541aa1f636c94e748ebf4f2b3b18fc21a85f5fd3d6c52dc229acaf2dcb5759b3817cb00984f3e6759009d819e8c202fd73c363c38653ffff7f20ffffff1f@3eef70715fa2ba7948376c64a87afc626acc719ab901b1b78fe5377bf07cb983`"18446744073709551807  -04000000f406facadb248eb9072c2edf79cfd9f1e80813c56159a35d7999502b9bd55a51da31719213677adabe373993b4cb9218410a1cea8775df44b069c65dd5f25b46bcb88653ffff7f2001000000@7f73bbe33b9afea41e216a50e66a5823a13e6e4b0da53516524f2b8fbda0dc4ea"18446744073709551809 +0400000083b97cf07b37e58fb7b101b99a71cc6a62fc7aa8646c374879baa25f7170ef3e6dd6eec26f4f206e96193b099db6d9f457f11e3a54eba2eb3ba4564139c6ef15ebc48653ffff7f20f2ffffef@64c1e2ad2beac3363d94f146cb22b781259fef97e7e3b06955e316efaef8fef5a"18446744073709551809  -040000004edca0bd8f2b4f521635a50d4b6e3ea123586ae6506a211ea4fe9a3be3bb737f1b50a38cb3979ddd30931278affb069c29363a29657592441a669e919e800d77c3ba8653ffff7f20f3ffffef@6c8af20e583c4de8275f9960e630ef08fb4db1338b7f5cfee25d0b945ca4c48db"18446744073709551811 +04000000f5fef8aeef16e35569b0e3e797ef9f2581b722cb46f1943d36c3ea2bade2c16447b66541c3ab38a4cd1b321d581bf00ebb8796b2f75ec158db02d399e978ab80d1c68653ffff7f2003000000@03320b5ea88a3ba08b1b6a82a116c4478de7c6b1f51762fc2895b7fa7a95f5d6b"18446744073709551811  -040000008dc4a45c940b5de2fe5c7f8b33b14dfb08ef30e660995f27e84d3c580ef28a6c8261abdf2c315dce39e1b0afed3dcb258fd8b66c889f2b7aeb624ed13e772fa618bd8653ffff7f20f3ffffef@37f033d51d4e01dab378977a0fd6519d79b4ff18a6f2f592b17676dbcb512213c"18446744073709551813 +04000000d6f5957afab79528fc6217f5b1c6e78d47c416a1826a1b8ba03b8aa85e0b320392e0ab9ea8c13887f80940f846bb6317303db2e6393e648c1b007d9e2a7d1d85f2c78653ffff7f20f7ffffef@7a0974e4c307d53d8adeaa6bdee0e93ad450630d5c4a10afb8391b414a6f8d7fc"18446744073709551813  -04000000132251cbdb7676b192f5f2a618ffb4799d51d60f7a9778b3da014e1dd533f037e2bebb077d6e331592454437d10b666cd91115693195e235a9c727894977612932bf8653ffff7f20f6ffffef@0e94820f8aca59c668c2a233882051d5e9e197956fae906e186d4be78ec6c1c6d"18446744073709551815 \ No newline at end of file +040000007f8d6f4a411b39b8af104a5c0d6350d43ae9e0de6baade8a3dd507c3e474097a960a4b05e73c40273cf242fd8449adbfbf94555995344f1a4467cba8525e3b2ba9c98653ffff7f20f3ffffef@46d0aa1ee364365cbded4e5ca2cbc642909c521104fdbb31a7e84431c5799665d"18446744073709551815 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork.dat b/packages/test-utils/testdata/btc_light_client_fork.dat index cf652a33..094bfe41 100644 --- a/packages/test-utils/testdata/btc_light_client_fork.dat +++ b/packages/test-utils/testdata/btc_light_client_fork.dat @@ -1,23 +1,23 @@  -04000000d2aad530761cf4f1b36f38d313f4709d7851cbb67d05163f65c228103159bb3c64921b2946c1f942737d56f2f92fbd8a752d27738896186e0ded3e4532c4c5d6ddae8653ffff7f20f2ffffef@2b6bb0ba21189a4ecb235fb0fd547e5f30c43a98da0d2a290739bf21dd4a42e3["18446744073709551797 +04000000ff7d8795e299b73df54d44f9d257611c61c2b7c9c83f22ff8de5a7c51f6a57164312d5c92c1ab1da689538b6d8b8d1d92a9cbb07c5ed15daa166fe2d8d27677a34ba8653ffff7f20f2ffffef@3c247dfed7be86ecc366252d3152dbfaaf9ebba102f2ee24bb0bdd7ac26d767e["18446744073709551797  -04000000e3424add21bf3907292a0dda983ac4305f7e54fdb05f23cb4e9a1821bab06b2bb6a805046a40201d03393f6944d9b99e80b2cdcff8551fb93752f9ac5304c627feaf8653ffff7f20f2ffffef@308a5252c3dc7e2188ebf1854f9855bcf519cd1f8c46a3f39e58f7966476b64b\"18446744073709551799 +040000007e766dc27add0bbb24eef202a1bb9eaffadb52312d2566c3ec86bed7fe7d243cb61d02e31e33db91a0f5f85a6108bb2af87db761445e9149524b8726f76bd21988bb8653ffff7f20f2ffffef@16ffa3379a847f04ea07a81d501a377abe01b5d5e5b9dfa3ad1400d84130e5cd\"18446744073709551799  -040000004bb6766496f7589ef3a3468c1fcd19f5bc55984f85f1eb88217edcc352528a300bade6d3ce1f82694e76e4aafa3540f12c3bda7efe530b0b07347bdbef8219942db18653ffff7f20f2ffffef@3bb65618de6cb0b7a99a63988b5c222a8d2b6f9631f8972ba630712345bda591]"18446744073709551801 +04000000cde53041d80014ada3dfb9e5d5b501be7a371a501da807ea047f849a37a3ff16966e546f76c22d478a49b909cf0e7a09cc20a72b01f68339f611c75afeecf1e40bbd8653ffff7f20f2ffffef@0a9508a7554e2bc2e7d1bb21276dd6c09e21e629fb3db152f89a49cd22e56e03]"18446744073709551801  -0400000091a5bd45237130a62b97f831966f2b8d2a225c8b98639aa9b7b06cde1856b63bae5a00bf6d39362089982a62ebd3c547582005bd1168a1d5edffbc81b7099eb83bb28653ffff7f2002000000@3e3a9d79b88b6e9c93c6ac6982dbd0fcc4e933ca19ae82edf57ad34f5e657c86^"18446744073709551803 +04000000036ee522cd499af852b13dfb29e6219ec0d66d2721bbd1e7c22b4e55a708950afad0b545c6571bd6a6fccdd1881edeb11afc0bf5b85523aa8716be07e143012fdcbe8653ffff7f20f3ffffef@6571de73d421436147d9f414c77f3cdcd2b7f47e15c73d4689889179d4640143^"18446744073709551803  -04000000867c655e4fd37af5ed82ae19ca33e9c4fcd0db8269acc6939c6e8bb8799d3a3e6aa0273ac76394d4ac3bb92a7125be10b7af99eacac93ac559cec7742533edb4afb48653ffff7f2001000000@73c1380e16d4fd137145e8afa05bf7192ee277ed9774af81e153e522d503a0b7_"18446744073709551805 +04000000430164d479918889463dc7157ef4b7d2dc3c7fc714f4d947614321d473de71650dc729ab179cc91272e61153a9d5426023ecc47da1c22f8c143e786e58e5e632e1c08653ffff7f20fbffffef@7c6ac066f53af9a49a8f29b621a6b26b192d42e77b9ac4872a1e5d820944a0aa_"18446744073709551805  -04000000b7a003d522e553e181af7497ed77e22e19f75ba0afe8457113fdd4160e38c17399f9772ba31a4119539e356fe289a5e6f7c6c0e3546d14b08b928cbee2de27e7bcb58653ffff7f20f3ffffef@75f9f6b7b5826b3dc9aeeafa21eb499b4ef1cafa5331115bd7d64c3b777a35a8`"18446744073709551807 +04000000aaa04409825d1e2a87c49a7be7422d196bb2a621b6298f9aa4f93af566c06a7c1ccb0e8587789a3334229d1a162c169709b2bb36811e90d0abb7f1f6d8f4798ef4c28653ffff7f20f2ffffef@2350b01fc5e75b224eff07b7e472bc1071a768ef1d846b179f852d511059af49`"18446744073709551807  -04000000a8357a773b4cd6d75b113153facaf14e9b49eb21faeaaec93d6b82b5b7f6f9750e8dab732d830b1af5ed1d5a0eba7d1eff82d331c1ca963150c67f9368c9defd51b78653ffff7f20f3ffffef@1185f7d04249ad5d4de79989f36a5c0b1d140c22fa9eb4cb39398ac9d9e0070ea"18446744073709551809 +0400000049af5910512d859f176b841def68a77110bc72e4b707ff4e225be7c51fb05023a80e9714cc66dbf364d5e3b977a877a4d7087165e1b41ddcdab37e220dc5aa4cb7c48653ffff7f20fdffff4f@16d2d772bc35af191c60db5627ec9e7881218d0877b4eb0c3e264bf80490c694a"18446744073709551809  -040000000e07e0d9c98a3939cbb49efa220c141d0b5c6af38999e74d5dad4942d0f785111f10c6f4644b9f1addf7f97846a5dd272e41067e0ae97ee5a1f6ec85f1babdf8e8b98653ffff7f20f3ffffef@772d5dad5e53f1a2e07b37a2adbc2c0e0abb54fb72cf54eb9da4caa3b05fadddb"18446744073709551811 +0400000094c69004f84b263e0cebb477088d2181789eec2756db601c19af35bc72d7d216632aae94d7b8ed7ed72321f3765bf3c45888e83d707998c2489c118610796b285ec78653ffff7f2000000010@2d2bdeb2599cef5e416eabf8107d38c9503e48d2b66a1357793b5ca08fefa083b"18446744073709551811  -04000000ddad5fb0a3caa49deb54cf72fb54bb0a0e2cbcada2377be0a2f1535ead5d2d77ad07c9fda8ca9ac0f94a026df4be6e6a73cee606e06b781fe3e7b91f73da717847bc8653ffff7f20f2ffffef@07aecf35204dbf3e666cf055278cf18e227a5bbad2ea6a70a0fc36c00884d1acc"18446744073709551813 +0400000083a0ef8fa05c3b7957136ab6d2483e50c9387d10f8ab6e415eef9c59b2de2b2d2d8ccaa347fb9e1b129d4f62db6bcea29daf8d22d9ba2617ccca61e769920324e4c88653ffff7f20f2ffffef@74aaf0e05d873c213c0c9db4f6025ec0d219bdd2e19b37d6d71e65fd4db9aacac"18446744073709551813  -04000000acd18408c036fca0706aead2ba5b7a228ef18c2755f06c663ebf4d2035cfae0768a655486067b45c8cf3b27982053b229a83b0c9593b0fe72d6e0acbb8527c636dbe8653ffff7f20f2ffffef@3683d68b1a0f2257bf03e3c6fd26b45261abbd029924c10cd9f92f225971c31ad"18446744073709551815 +04000000caaab94dfd651ed7d6379be1d2bd19d2c05e02f6b49d0c3c213c875de0f0aa74919279b5a12e6171f8327085f969bb261b0d9643d4289d17bc8b2e7f6fa156d814cb8653ffff7f20f5ffffef@3e2697768b6dedbd9252948fbddaf2b771dbb634da5353dea356ed80b24c7aa4d"18446744073709551815  -040000001ac37159222ff9d90cc1249902bdab6152b426fdc6e303bf57220f1a8bd68336588fac98b385a6f447309ecee5303ecd9a6374c3fc2b5886c94ba672e7fb30a2b0c08653ffff7f2001000000@6955a5fe7d7161d15db5a4dad62b10bf1557dbd41f204666b8a40215bf19fdbae"18446744073709551817 \ No newline at end of file +04000000a47a4cb280ed56a3de5353da34b6db71b7f2dabd8f945292bded6d8b7697263e17ead191c679479f1edce3368e10830cfb85b46b30f97aa6a054c09f554dd2411bcd8653ffff7f20feffff2f@795373b3cc9261831b7ddd3157957c918f06d611eca7b9a7b56fb0740d87cdbee"18446744073709551817 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork_msg.json b/packages/test-utils/testdata/btc_light_client_fork_msg.json index 97386dc4..5f0d5f63 100644 --- a/packages/test-utils/testdata/btc_light_client_fork_msg.json +++ b/packages/test-utils/testdata/btc_light_client_fork_msg.json @@ -1 +1 @@ -{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"3cbb59311028c2653f16057db6cb51789d70f413d3386fb3f1f41c7630d5aad2","merkle_root":"d6c5c432453eed0d6e18968873272d758abd2ff9f2567d7342f9c146291b9264","time":1401335517,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"2b6bb0ba21189a4ecb235fb0fd547e5f30c43a98da0d2a290739bf21dd4a42e3","merkle_root":"27c60453acf95237b91f55f8cfcdb2809eb9d944693f39031d20406a0405a8b6","time":1401335806,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"308a5252c3dc7e2188ebf1854f9855bcf519cd1f8c46a3f39e58f7966476b64b","merkle_root":"941982efdb7b34070b0b53fe7eda3b2cf14035faaae4764e69821fced3e6ad0b","time":1401336109,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"3bb65618de6cb0b7a99a63988b5c222a8d2b6f9631f8972ba630712345bda591","merkle_root":"b89e09b781bcffedd5a16811bd05205847c5d3eb622a98892036396dbf005aae","time":1401336379,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"39fc26fb3f80af296bca0a0349eb937bee2713bbfda146bc2d7a47a32c53fb7a","merkle_root":"b4ed332574c7ce59c53ac9caea99afb710be25712ab93bacd49463c73a27a06a","time":1401337007,"bits":545259519,"nonce":4026531829},{"version":4,"prev_blockhash":"6fd7d82642ac803224e52a94ea11b16a44d715da01e9f4a8da01b1e23f4fa94f","merkle_root":"e727dee2be8c928bb0146d54e3c0c6f7e6a589e26f359e5319411aa32b77f999","time":1401337276,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"5c7243eb3b5edfa9bdc6d379b32f723f9d935d99f58d7c8ec3fad539427c28db","merkle_root":"fddec968937fc6503196cac131d382ff1e7dba0e5a1dedf51a0b832d73ab8d0e","time":1401337681,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"09519b0e9fbdd2aef4635a274913f49f6d478e51232b9081d7a3acc7da43e482","merkle_root":"f8bdbaf185ecf6a1e57ee90a7e06412e27dda54678f9f7dd1a9f4b64f4c6101f","time":1401338344,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"66fdfce54bccc9328de1098940a2f411bf16a6469ee3b1e113cf6ebadac88b10","merkle_root":"7871da731fb9e7e31f786be006e6ce736a6ebef46d024af9c09acaa8fdc907ad","time":1401338951,"bits":545259519,"nonce":536870911},{"version":4,"prev_blockhash":"1ff9a41ea1f798e44f299a6f6555a7cdd1466257e23d677efde484859eb1bb64","merkle_root":"637c52b8cb0a6e2de70f3b59c9b0839a223b058279b2f38c5cb467604855a668","time":1401339501,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"6b3688f531d34fc10fc0a6be976420e89b97fe29bc4d099489450b7324a1a4be","merkle_root":"a230fbe772a64bc986582bfcc374639acd3e30e5ce9e3047f4a685b398ac8f58","time":1401340080,"bits":545259519,"nonce":4026531826}]}} \ No newline at end of file +{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"16576a1fc5a7e58dff223fc8c9b7c2611c6157d2f9444df53db799e295877dff","merkle_root":"7a67278d2dfe66a1da15edc507bb9c2ad9d1b8d8b6389568dab11a2cc9d51243","time":1401338420,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"3c247dfed7be86ecc366252d3152dbfaaf9ebba102f2ee24bb0bdd7ac26d767e","merkle_root":"19d26bf726874b5249915e4461b77df82abb08615af8f5a091db331ee3021db6","time":1401338760,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"16ffa3379a847f04ea07a81d501a377abe01b5d5e5b9dfa3ad1400d84130e5cd","merkle_root":"e4f1ecfe5ac711f63983f6012ba720cc097a0ecf09b9498a472dc2766f546e96","time":1401339147,"bits":545259519,"nonce":1342177279},{"version":4,"prev_blockhash":"3a94a3532a623e0434438a6eaea1a49436dc21ac7afc11f50c800a772d5f8d06","merkle_root":"2f0143e107be1687aa2355b8f50bfc1ab1de1e88d1cdfca6d61b57c645b5d0fa","time":1401339612,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"57fa6d320272e0177c7faeab647b1c06ab4a9bedc36600e2cd9272d0e8df227e","merkle_root":"32e6e5586e783e148c2fc2a17dc4ec236042d5a95311e67212c99c17ab29c70d","time":1401340129,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"4d4cec5c604b1cc7dde9a73a6a8ee90982d06e6c706bf40bd845ba5f3e109b7a","merkle_root":"8e79f4d8f6f1b7abd0901e8136bbb20997162c161a9d2234339a7887850ecb1c","time":1401340660,"bits":545259519,"nonce":2},{"version":4,"prev_blockhash":"5071a9a7840db09d7aa9b5cafc487df3bbef9533a1578d80ba5b9e45740d87be","merkle_root":"4caac50d227eb3dadc1db4e1657108d7a477a877b9e3d564f3db66cc14970ea8","time":1401341111,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"61f7b7621d6d83bd114c7bb336dde4d73c199602cd12e780762c55653e71a692","merkle_root":"286b791086119c48c29879703de88858c4f35b76f32123d77eedb8d794ae2a63","time":1401341790,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"0cd0f74421d6b086542a39b202b2f79468cf1083ca65a9c39a1708840871c0a0","merkle_root":"24039269e761cacc1726bad9228daf9da2ce6bdb624f9d121b9efb47a3ca8c2d","time":1401342180,"bits":545259519,"nonce":268435458},{"version":4,"prev_blockhash":"17fdb373c5a681cc081f9dde8afbbe09ba69922ffb17adc097ad19a5046391a3","merkle_root":"d856a16f7f2e8bbc179d28d443960d1b26bb69f9857032f871612ea1b5799291","time":1401342740,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"4284dedf56946827b6a78bb404e425123b555758f98098350955d5756f1c2760","merkle_root":"41d24d559fc054a0a67af9306bb485fb0c83108e36e3dc1e9f4779c691d1ea17","time":1401343259,"bits":545259519,"nonce":4026531826}]}} \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_timestamp.dat b/packages/test-utils/testdata/btc_timestamp.dat index 449d9f555296e49d3e1671d9d06ba5b78b396459..865d9d8971debaaff99e17f2c56b9cedf04be3ef 100644 GIT binary patch literal 5902 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 literal 5837 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 literal 80 zcmV-W0I&afN}wKdOkJBNZQVM?@S+Gd-{5^6h9#vjFhtV3T7cb0vloyhsura0&1lQ> my>&wW6Z$s|FTHtZ1S#`*jJx~!N(n{sDYHob|9>F!|NrkBB`K!> diff --git a/packages/test-utils/testdata/btcstaking_params.dat b/packages/test-utils/testdata/btcstaking_params.dat index 362ed0fc9755e0128cddf91140139c4efa38fe43..a986a13b4f00158cb072353954d4e794f0f24d91 100644 GIT binary patch literal 217 zcmV;~04DzmAm6Vyi|R5qpSHjSe0}^9FIuy%naR*s^rw}K0d-Jn3JM@##Nkz4eb5l> zUCWU!@vb50MT3;F9Ngo1ks(nV55?*VAWv?Mq=dY<&ZNqiIzR~l`8u8egkEWh>+Qiw2ym4$!`AoP4jWSMRHhD)SN z$7XzZY|+VCp`+T*2Bo=>d@dJc#1I1-B5ig^bu~>|cTja|O*L{=PDEluX=-(6ZhB#9 TG&nd|X+twA0WdNFFiHV1&yQb{ literal 217 zcmV;~04DzmAl=2G35GjZCZdT7T|SuU&;;_0YHfg+TG(HFh@~2&=?Wlxwes-UMem|eQW{SRAcJmjgap^W2oS>v ze$a}$kk5d=wC2q`;|LEf;lt9#Y7he&B5h}FLN{`FZewmTPC|5gXm@ioT4Pu_VRl$+ TWo}V#Yk4>-0WdNFFiHV1UtWR5Oi58ȟtH>ݦ}l7[cfp \ No newline at end of file +*bbn1n9dpn59tvgamh9vd4vjlj8m0lzksdqmglpldma x=^'w#&7L:"by*5j=#d +* i e6Jrr} ̺3_w2@L +rbFwݒHf5'7\-fhC%OPdGPY?숸e0MeR \ No newline at end of file diff --git a/packages/test-utils/testdata/eots_testdata.json b/packages/test-utils/testdata/eots_testdata.json index 436e8ea5..13da4485 100644 --- a/packages/test-utils/testdata/eots_testdata.json +++ b/packages/test-utils/testdata/eots_testdata.json @@ -1 +1 @@ -{"sk":"c00fa5d362c4896cd4edcafa0f7e51573c2acf3d02014588439a684783360249","pk":"c18b872fa543d7c46f966e0a79e03bbe2b8b7ca7d4302acd086dd1eee3f13e78","sr":"1dda14873a46ea56575c6830e335ae74def7969fce2a61ec79657579fd3a6c4d","pr":"e627dba3769a4fcff0abdbc9c0fb0389112ebc03648e87e4cfbb6187402f36e4","msg1":"68656c6c6f20776f726c642031","msg2":"68656c6c6f20776f726c642032","sig1":"22b822f443015c5bd94bbd8b94729a88da04c19bb2bfb6a998dbefd5d2b2ae5d","sig2":"72660b9b9e0408a86e83858a62d3dc7a4cbccc60e9cd294a7abc30dd75c53180"} \ No newline at end of file +{"sk":"486d5a30bbc6089bb1cd1e1f774d94bc7d61f9a0b19b8d8332ca70f5b06ecfd4","pk":"5847016c7e674f494d4369aae0572ef9234cf7c90acc6c06e381996eb0a24b97","sr":"2ca853d3604b7ed42339c22473e075bf96719b450f667822af22f10917ce058a","pr":"efcd121b08e82edcdb5b45f204caf69ded1fb55fd7a0445049f3c3e4a4228d21","msg1":"68656c6c6f20776f726c642031","msg2":"68656c6c6f20776f726c642032","sig1":"51a51f6a1d57fcc32a5855c1b2ea2a3175a0968a1e8035dcbd9ffce9db6d03b5","sig2":"e52e6b05e7bc57810c368729ff581f01480f5db6eee821aeb7e3ac4f3354a66a"} \ No newline at end of file diff --git a/packages/test-utils/testdata/pub_rand_value.dat b/packages/test-utils/testdata/pub_rand_value.dat index 6c879ff7..3290ec95 100644 --- a/packages/test-utils/testdata/pub_rand_value.dat +++ b/packages/test-utils/testdata/pub_rand_value.dat @@ -1 +1 @@ -rp)Gl/Y$X>=Qɰp \ No newline at end of file +yڻä`]yݹdP{s|! \ No newline at end of file diff --git a/packages/test-utils/testdata/raw_ckpt.dat b/packages/test-utils/testdata/raw_ckpt.dat index ae49ee13a9721ac49398442f4ef716e26ad038df..c6c5ca6491560017436d00f75e7b1af1ba2fc014 100644 GIT binary patch literal 102 zcmdiX-1LB>Rx;1)$&1?{^$Y#9v3Nm literal 102 zcmdh~y?8Ju)-Qh737;6p{)LzBv;B&_^m+ From d30dd5480da0fc8368c362dd289dff1d1e8b2a88 Mon Sep 17 00:00:00 2001 From: Runchao Han Date: Mon, 2 Sep 2024 11:38:07 +1000 Subject: [PATCH 4/8] datagen for fp --- .gitmodules | 10 +- RELEASE.md | 2 +- contracts/btc-staking/src/contract.rs | 58 ++--- contracts/btc-staking/src/queries.rs | 100 +++++---- contracts/op-finality-gadget/src/utils.rs | 4 +- datagen/go.mod | 34 +-- datagen/go.sum | 19 ++ datagen/utils/btcstaking.go | 20 ++ go.work.sum | 23 +- packages/proto/babylon-private | 1 - packages/proto/buf.gen.rust.yaml | 1 + packages/proto/buf.work.yaml | 2 +- .../proto/src/gen/babylon.btcstaking.v1.rs | 39 ++++ packages/test-utils/src/lib.rs | 11 +- .../testdata/add_finality_sig_1_msg.dat | Bin 359 -> 359 bytes .../testdata/add_finality_sig_2_msg.dat | Bin 359 -> 359 bytes .../test-utils/testdata/btc_delegation.dat | Bin 3964 -> 3964 bytes .../test-utils/testdata/btc_light_client.dat | 200 +++++++++--------- .../testdata/btc_light_client_fork.dat | 22 +- .../testdata/btc_light_client_fork_msg.json | 2 +- .../test-utils/testdata/btc_timestamp.dat | Bin 5902 -> 5867 bytes .../testdata/btc_timestamp_header0.dat | 3 +- .../testdata/btc_timestamp_header1.dat | Bin 80 -> 80 bytes .../test-utils/testdata/btcstaking_params.dat | 11 +- .../testdata/commit_pub_rand_msg.dat | 5 +- .../test-utils/testdata/eots_testdata.json | 2 +- .../testdata/finality_provider_1.dat | Bin 0 -> 201 bytes .../testdata/finality_provider_2.dat | 4 + .../testdata/finality_provider_3.dat | Bin 0 -> 202 bytes .../test-utils/testdata/pub_rand_value.dat | 2 +- packages/test-utils/testdata/raw_ckpt.dat | Bin 102 -> 102 bytes 31 files changed, 347 insertions(+), 228 deletions(-) delete mode 160000 packages/proto/babylon-private create mode 100644 packages/test-utils/testdata/finality_provider_1.dat create mode 100644 packages/test-utils/testdata/finality_provider_2.dat create mode 100644 packages/test-utils/testdata/finality_provider_3.dat diff --git a/.gitmodules b/.gitmodules index 08eb4bdf..b164a9c5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +1,4 @@ [submodule "packages/proto/babylon"] - path = packages/proto/babylon - url = git@github.com:babylonlabs-io/babylon.git - branch = dev -[submodule "packages/proto/babylon-private"] - path = packages/proto/babylon-private - url = git@github.com:babylonlabs-io/babylon-private.git - branch = base/consumer-chain-support +path = packages/proto/babylon +url = git@github.com:babylonlabs-io/babylon.git +branch = dev diff --git a/RELEASE.md b/RELEASE.md index c4492ccf..594942a3 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -7,7 +7,7 @@ This document describes the process for `babylon-contract` releases. * A release is initiated by creating a release branch `release-a.b` marking the major/minor release. * Before beginning a release branch, check that dependencies have been pulled up to date: * Protobuf references and generation - * `cd packages/proto/; cd babylon-private; git fetch; git pull --rebase; cd ../..; git add babylon-private; git commit -m "pull in latest babylon-private"` + * `cd packages/proto/; cd babylon; git fetch; git pull --rebase; cd ../..; git add babylon; git commit -m "pull in latest babylon"` * `cd ../..; cargo run-script gen-proto; git add packages/proto; git commit -m "update gen proto"` * Then build and run tests to ensure the new proto is working. * `cargo build; cargo test` diff --git a/contracts/btc-staking/src/contract.rs b/contracts/btc-staking/src/contract.rs index 6a1ff385..c0d84fc0 100644 --- a/contracts/btc-staking/src/contract.rs +++ b/contracts/btc-staking/src/contract.rs @@ -275,6 +275,8 @@ fn handle_end_block( #[cfg(test)] pub(crate) mod tests { + use std::str::FromStr; + use super::*; use babylon_apis::btc_staking_api::{ @@ -282,7 +284,7 @@ pub(crate) mod tests { FinalityProviderDescription, NewFinalityProvider, ProofOfPossessionBtc, }; use babylon_apis::finality_api::PubRandCommit; - use babylon_proto::babylon::btcstaking::v1::BtcDelegation; + use babylon_proto::babylon::btcstaking::v1::{BtcDelegation, FinalityProvider}; use cosmwasm_std::{ from_json, testing::{message_info, mock_dependencies, mock_env}, @@ -290,12 +292,35 @@ pub(crate) mod tests { }; use cw_controllers::AdminResponse; use hex::ToHex; - use test_utils::{get_btc_delegation, get_pub_rand_commit}; + use test_utils::{get_btc_delegation, get_finality_provider, get_pub_rand_commit}; pub(crate) const CREATOR: &str = "creator"; pub(crate) const INIT_ADMIN: &str = "initial_admin"; const NEW_ADMIN: &str = "new_admin"; + fn new_finality_provider(fp: FinalityProvider) -> NewFinalityProvider { + NewFinalityProvider { + addr: fp.addr, + description: fp.description.map(|desc| FinalityProviderDescription { + moniker: desc.moniker, + identity: desc.identity, + website: desc.website, + security_contact: desc.security_contact, + details: desc.details, + }), + commission: Decimal::from_str(&fp.commission).unwrap(), + btc_pk_hex: fp.btc_pk.encode_hex(), + pop: match fp.pop { + Some(pop) => Some(ProofOfPossessionBtc { + btc_sig_type: pop.btc_sig_type, + btc_sig: Binary::new(pop.btc_sig.to_vec()), + }), + None => None, + }, + consumer_id: fp.consumer_id, + } + } + fn new_active_btc_delegation(del: BtcDelegation) -> ActiveBtcDelegation { let btc_undelegation = del.btc_undelegation.unwrap(); @@ -350,22 +375,16 @@ pub(crate) mod tests { } // Build a derived active BTC delegation from the base (from testdata) BTC delegation - pub(crate) fn get_derived_btc_delegation(del_id: u8, fp_ids: &[u8]) -> ActiveBtcDelegation { + pub(crate) fn get_derived_btc_delegation(del_id: u8, fp_ids: &[String]) -> ActiveBtcDelegation { assert!( 0 < del_id && del_id < 10, "Derived delegation id must be between 1 and 9" ); - fp_ids.iter().for_each(|&fp_id| { - assert!( - 0 < fp_id && fp_id < 10, - "Derived FP ids must be between 1 and 9" - ) - }); let mut del = get_active_btc_delegation(); // Change the BTC public key and the finality provider public key list based on the id del.btc_pk_hex = format!("d{del_id}"); - del.fp_btc_pk_list = fp_ids.iter().map(|fp_id| format!("f{fp_id}")).collect(); + del.fp_btc_pk_list = fp_ids.to_vec(); // Avoid repeated staking tx hash let mut staking_tx = del.staking_tx.to_vec(); @@ -399,23 +418,8 @@ pub(crate) mod tests { } pub(crate) fn create_new_finality_provider(id: i32) -> NewFinalityProvider { - NewFinalityProvider { - addr: format!("a{}", id), - description: Some(FinalityProviderDescription { - moniker: format!("fp{}", id), - identity: format!("Finality Provider {}", id), - website: format!("https:://fp{}.com", id), - security_contact: "security_contact".to_string(), - details: format!("details fp{}", id), - }), - commission: Decimal::percent(5), - btc_pk_hex: format!("f{}", id), - pop: Some(ProofOfPossessionBtc { - btc_sig_type: 0, - btc_sig: Binary::new(vec![]), - }), - consumer_id: format!("osmosis-{}", id), - } + let fp = get_finality_provider(id); + new_finality_provider(fp) } #[test] diff --git a/contracts/btc-staking/src/queries.rs b/contracts/btc-staking/src/queries.rs index 6cf6f92e..1df7100a 100644 --- a/contracts/btc-staking/src/queries.rs +++ b/contracts/btc-staking/src/queries.rs @@ -297,6 +297,7 @@ mod tests { .unwrap() .fps; let fp1 = FinalityProvider::from(&new_fp1); + let fp1_pk = fp1.btc_pk_hex.clone(); let fp2 = FinalityProvider::from(&new_fp2); assert_eq!(fps.len(), 2); assert_eq!(fps[0], fp1); @@ -310,7 +311,7 @@ mod tests { assert_eq!(fps[0], fp1); // Query finality providers with start_after - let fps = crate::queries::finality_providers(deps.as_ref(), Some("f1".to_string()), None) + let fps = crate::queries::finality_providers(deps.as_ref(), Some(fp1_pk.clone()), None) .unwrap() .fps; assert_eq!(fps.len(), 1); @@ -347,8 +348,8 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); - let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[2]); + let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex]); + let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp2.btc_pk_hex]); let msg = ExecuteMsg::BtcStaking { new_fp: vec![], @@ -418,8 +419,9 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); - let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[1]); + let del1 = + crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex.clone()]); + let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp1.btc_pk_hex]); let msg = ExecuteMsg::BtcStaking { new_fp: vec![], @@ -492,7 +494,9 @@ mod tests { // Add a couple finality providers let new_fp1 = create_new_finality_provider(1); + let fp1_pk = new_fp1.btc_pk_hex.clone(); let new_fp2 = create_new_finality_provider(2); + let fp2_pk = new_fp2.btc_pk_hex.clone(); let msg = ExecuteMsg::BtcStaking { new_fp: vec![new_fp1.clone(), new_fp2.clone()], @@ -504,8 +508,8 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); - let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[2]); + let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex]); + let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp2.btc_pk_hex]); let msg = ExecuteMsg::BtcStaking { new_fp: vec![], @@ -517,11 +521,11 @@ mod tests { execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Query delegations by finality provider - let dels1 = crate::queries::delegations_by_fp(deps.as_ref(), "f1".to_string()) + let dels1 = crate::queries::delegations_by_fp(deps.as_ref(), fp1_pk.clone()) .unwrap() .hashes; assert_eq!(dels1.len(), 1); - let dels2 = crate::queries::delegations_by_fp(deps.as_ref(), "f2".to_string()) + let dels2 = crate::queries::delegations_by_fp(deps.as_ref(), fp2_pk.clone()) .unwrap() .hashes; assert_eq!(dels2.len(), 1); @@ -548,6 +552,7 @@ mod tests { // Add a finality provider let new_fp1 = create_new_finality_provider(1); + let fp1_pk = new_fp1.btc_pk_hex.clone(); let msg = ExecuteMsg::BtcStaking { new_fp: vec![new_fp1.clone()], @@ -559,8 +564,9 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); - let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[1]); + let mut del1 = + crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex.clone()]); + let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp1.btc_pk_hex]); // Adjust staking amounts del1.total_sat = 100; @@ -576,14 +582,13 @@ mod tests { execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Query all delegations by finality provider - let dels1 = - crate::queries::active_delegations_by_fp(deps.as_ref(), "f1".to_string(), false) - .unwrap() - .delegations; + let dels1 = crate::queries::active_delegations_by_fp(deps.as_ref(), fp1_pk.clone(), false) + .unwrap() + .delegations; assert_eq!(dels1.len(), 2); // Query active delegations by finality provider - let dels1 = crate::queries::active_delegations_by_fp(deps.as_ref(), "f1".to_string(), true) + let dels1 = crate::queries::active_delegations_by_fp(deps.as_ref(), fp1_pk.clone(), true) .unwrap() .delegations; assert_eq!(dels1.len(), 2); @@ -603,14 +608,13 @@ mod tests { execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Query all delegations by finality provider - let dels1 = - crate::queries::active_delegations_by_fp(deps.as_ref(), "f1".to_string(), false) - .unwrap() - .delegations; + let dels1 = crate::queries::active_delegations_by_fp(deps.as_ref(), fp1_pk.clone(), false) + .unwrap() + .delegations; assert_eq!(dels1.len(), 2); // Query active delegations by finality provider - let dels1 = crate::queries::active_delegations_by_fp(deps.as_ref(), "f1".to_string(), true) + let dels1 = crate::queries::active_delegations_by_fp(deps.as_ref(), fp1_pk.clone(), true) .unwrap() .delegations; assert_eq!(dels1.len(), 1); @@ -639,6 +643,7 @@ mod tests { // Add a finality provider let new_fp1 = create_new_finality_provider(1); + let fp1_pk = new_fp1.btc_pk_hex.clone(); let msg = ExecuteMsg::BtcStaking { new_fp: vec![new_fp1.clone()], @@ -650,8 +655,8 @@ mod tests { let _res = execute(deps.as_mut(), initial_env, info.clone(), msg).unwrap(); // Add a couple delegations - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); - let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[1]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[fp1_pk.clone()]); + let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[fp1_pk.clone()]); // Adjust staking amounts del1.total_sat = 100; @@ -668,45 +673,44 @@ mod tests { // Query finality provider info let fp = - crate::queries::finality_provider_info(deps.as_ref(), "f1".to_string(), None).unwrap(); + crate::queries::finality_provider_info(deps.as_ref(), fp1_pk.clone(), None).unwrap(); assert_eq!( fp, FinalityProviderInfo { - btc_pk_hex: "f1".to_string(), + btc_pk_hex: fp1_pk.clone(), power: 250, } ); // Query finality provider info with same height as execute call - let fp = crate::queries::finality_provider_info(deps.as_ref(), "f1".to_string(), Some(11)) + let fp = crate::queries::finality_provider_info(deps.as_ref(), fp1_pk.clone(), Some(11)) .unwrap(); assert_eq!( fp, FinalityProviderInfo { - btc_pk_hex: "f1".to_string(), + btc_pk_hex: fp1_pk.clone(), power: 0, // Historical data is not checkpoint yet } ); // Query finality provider info with past height as execute call - let fp = crate::queries::finality_provider_info(deps.as_ref(), "f1".to_string(), Some(12)) + let fp = crate::queries::finality_provider_info(deps.as_ref(), fp1_pk.clone(), Some(12)) .unwrap(); assert_eq!( fp, FinalityProviderInfo { - btc_pk_hex: "f1".to_string(), + btc_pk_hex: fp1_pk.clone(), power: 250, } ); // Query finality provider info with some larger height - let fp = - crate::queries::finality_provider_info(deps.as_ref(), "f1".to_string(), Some(1000)) - .unwrap(); + let fp = crate::queries::finality_provider_info(deps.as_ref(), fp1_pk.clone(), Some(1000)) + .unwrap(); assert_eq!( fp, FinalityProviderInfo { - btc_pk_hex: "f1".to_string(), + btc_pk_hex: fp1_pk.clone(), power: 250, } ); @@ -730,6 +734,7 @@ mod tests { // Add a finality provider let new_fp1 = create_new_finality_provider(1); + let fp1_pk = new_fp1.btc_pk_hex.clone(); let msg = ExecuteMsg::BtcStaking { new_fp: vec![new_fp1.clone()], @@ -741,7 +746,7 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a delegation - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex]); // Adjust staking amount del1.total_sat = 100; @@ -755,7 +760,7 @@ mod tests { execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Build raw key - let prefixed_key = namespace_with_key(&[FP_STATE_KEY.as_bytes()], b"f1"); + let prefixed_key = namespace_with_key(&[FP_STATE_KEY.as_bytes()], fp1_pk.as_bytes()); // Read directly from storage let fp_state_raw = deps.storage.get(&prefixed_key).unwrap(); // Deserialize result @@ -782,8 +787,11 @@ mod tests { // Add a couple finality providers let new_fp1 = create_new_finality_provider(1); + let fp1_pk = new_fp1.btc_pk_hex.clone(); let new_fp2 = create_new_finality_provider(2); + let fp2_pk = new_fp2.btc_pk_hex.clone(); let new_fp3 = create_new_finality_provider(3); + let fp3_pk = new_fp3.btc_pk_hex.clone(); let msg = ExecuteMsg::BtcStaking { new_fp: vec![new_fp1.clone(), new_fp2.clone(), new_fp3.clone()], @@ -795,9 +803,13 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add some delegations - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1, 3]); - let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[2]); - let mut del3 = crate::contract::tests::get_derived_btc_delegation(3, &[2]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation( + 1, + &[new_fp1.btc_pk_hex, new_fp3.btc_pk_hex], + ); + let mut del2 = + crate::contract::tests::get_derived_btc_delegation(2, &[new_fp2.btc_pk_hex.clone()]); + let mut del3 = crate::contract::tests::get_derived_btc_delegation(3, &[new_fp2.btc_pk_hex]); // Adjust staking amounts del1.total_sat = 100; @@ -820,19 +832,19 @@ mod tests { assert_eq!(fps.len(), 3); assert_eq!(fps[0], { FinalityProviderInfo { - btc_pk_hex: "f2".to_string(), + btc_pk_hex: fp2_pk.clone(), power: 225, } }); assert_eq!(fps[1], { FinalityProviderInfo { - btc_pk_hex: "f3".to_string(), + btc_pk_hex: fp3_pk.clone(), power: 100, } }); assert_eq!(fps[2], { FinalityProviderInfo { - btc_pk_hex: "f1".to_string(), + btc_pk_hex: fp1_pk.clone(), power: 100, } }); @@ -844,13 +856,13 @@ mod tests { assert_eq!(fps.len(), 2); assert_eq!(fps[0], { FinalityProviderInfo { - btc_pk_hex: "f2".to_string(), + btc_pk_hex: fp2_pk.clone(), power: 225, } }); assert_eq!(fps[1], { FinalityProviderInfo { - btc_pk_hex: "f3".to_string(), + btc_pk_hex: fp3_pk.clone(), power: 100, } }); @@ -863,7 +875,7 @@ mod tests { assert_eq!(fps.len(), 1); assert_eq!(fps[0], { FinalityProviderInfo { - btc_pk_hex: "f1".to_string(), + btc_pk_hex: fp1_pk.clone(), power: 100, } }); diff --git a/contracts/op-finality-gadget/src/utils.rs b/contracts/op-finality-gadget/src/utils.rs index 36363b05..fb0d2262 100644 --- a/contracts/op-finality-gadget/src/utils.rs +++ b/contracts/op-finality-gadget/src/utils.rs @@ -39,9 +39,9 @@ pub fn query_finality_provider( )?; let res_decoded = Bufany::deserialize(&res_data).unwrap(); - // see https://github.com/babylonlabs-io/babylon-private/blob/base/consumer-chain-support/proto/babylon/btcstkconsumer/v1/query.proto#L110 + // see https://github.com/babylonlabs-io/babylon/blob/base/consumer-chain-support/proto/babylon/btcstkconsumer/v1/query.proto#L110 let res_fp = res_decoded.message(1).unwrap(); - // see https://github.com/babylonlabs-io/babylon-private/blob/base/consumer-chain-support/proto/babylon/btcstkconsumer/v1/query.proto#L116 + // see https://github.com/babylonlabs-io/babylon/blob/base/consumer-chain-support/proto/babylon/btcstkconsumer/v1/query.proto#L116 // to understand how the index is determined here i.e. 6-10 let res: FinalityProviderResponse = FinalityProviderResponse { slashed_babylon_height: res_fp.uint64(6).unwrap(), diff --git a/datagen/go.mod b/datagen/go.mod index 41207fb9..f781aee6 100644 --- a/datagen/go.mod +++ b/datagen/go.mod @@ -6,7 +6,7 @@ toolchain go1.21.4 require ( cosmossdk.io/math v1.3.0 - github.com/babylonlabs-io/babylon v0.9.2 + github.com/babylonlabs-io/babylon v0.9.2-0.20240828065350-81ee356f706d github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcec/v2 v2.3.2 @@ -15,11 +15,11 @@ require ( ) require ( - cloud.google.com/go v0.112.0 // indirect - cloud.google.com/go/compute v1.24.0 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/compute v1.25.1 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.36.0 // indirect + cloud.google.com/go/storage v1.38.0 // indirect cosmossdk.io/api v0.7.4 // indirect cosmossdk.io/client/v2 v2.0.0-beta.1 // indirect cosmossdk.io/collections v0.4.0 // indirect @@ -112,7 +112,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.1 // indirect @@ -189,28 +189,28 @@ require ( github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.3.8 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect golang.org/x/net v0.24.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.162.0 // indirect + google.golang.org/api v0.169.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect + google.golang.org/grpc v1.64.0 // indirect + google.golang.org/protobuf v1.34.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/datagen/go.sum b/datagen/go.sum index e70a0cfd..be783ab0 100644 --- a/datagen/go.sum +++ b/datagen/go.sum @@ -32,6 +32,7 @@ cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34h cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -70,8 +71,10 @@ cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQH cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -173,6 +176,7 @@ cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeL cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -268,6 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.312 h1:llrElfzeqG/YOLFFKjg1xNpZCFJ2xraIi3PqSuP+95k= github.com/aws/aws-sdk-go v1.44.312/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/babylonlabs-io/babylon v0.9.2-0.20240828065350-81ee356f706d h1:bdpcpkscxL23EZ2Lsuw0S2Furvs4J7gdlrIvaPE9rE0= +github.com/babylonlabs-io/babylon v0.9.2-0.20240828065350-81ee356f706d/go.mod h1:CaUOkhCPxIrwns3etbCnpdpA73UP5mBh7nJdAKdwEcE= github.com/babylonlabs-io/babylon v0.9.2 h1:c1k6b15bZOYm1V2rG5kJ3nwhODGXAtFaQ0SnOA2b5Ss= github.com/babylonlabs-io/babylon v0.9.2/go.mod h1:t7B4e+ooD2oYvAxkegtNKDL9bXe+vU29a8xnCQh+UKo= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -350,6 +356,7 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= +github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 h1:DBmgJDC9dTfkVyGgipamEh2BpGYxScCH1TOF1LL1cXc= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -663,6 +670,7 @@ github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqE github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -1110,16 +1118,21 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1280,6 +1293,7 @@ golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1543,6 +1557,7 @@ google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1664,8 +1679,10 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8/go.mod h1:vPrPUTsDCYxXWjP7clS81mZ6/803D8K4iM9Ma27VKas= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1709,6 +1726,7 @@ google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCD google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1727,6 +1745,7 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/datagen/utils/btcstaking.go b/datagen/utils/btcstaking.go index 6b98db80..b106f980 100644 --- a/datagen/utils/btcstaking.go +++ b/datagen/utils/btcstaking.go @@ -1,6 +1,7 @@ package utils import ( + "fmt" "math/rand" "os" "path/filepath" @@ -17,6 +18,7 @@ import ( ) const ( + FP_FILENAME = "finality_provider_%d.dat" BTC_DEL_FILENAME = "btc_delegation.dat" BTCSTAKING_PARAMS_FILENAME = "btcstaking_params.dat" ) @@ -52,6 +54,23 @@ func GenParams(dir string) ([]*btcec.PrivateKey, uint32) { return covenantSKs, covenantQuorum } +func GenFinalityProviders(dir string, numFPs int) { + t := &testing.T{} + + for i := 1; i <= numFPs; i++ { + fp, err := datagen.GenRandomFinalityProvider(r) + require.NoError(t, err) + fp.ConsumerId = fmt.Sprintf("consumer-%d", i) + fpBytes, err := fp.Marshal() + require.NoError(t, err) + + fileName := fmt.Sprintf(FP_FILENAME, i) + fpPath := filepath.Join(dir, fileName) + err = os.WriteFile(fpPath, fpBytes, 0644) + require.NoError(t, err) + } +} + func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuorum uint32) { t := &testing.T{} @@ -112,5 +131,6 @@ func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuor func GenBTCDelegationsAndParams(dir string) { covenantSKs, covenantQuorum := GenParams(dir) + GenFinalityProviders(dir, 3) GenBTCDelegations(dir, covenantSKs, covenantQuorum) } diff --git a/go.work.sum b/go.work.sum index 53158be5..10cc2206 100644 --- a/go.work.sum +++ b/go.work.sum @@ -9,6 +9,7 @@ cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVqux cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go/accessapproval v1.7.2 h1:W55SFrY6EVlcmmRGUk0rGhuy3j4fn7UtEocib/zADVE= cloud.google.com/go/accessapproval v1.7.2/go.mod h1:/gShiq9/kK/h8T/eEn1BTzalDvk0mZxJlhfw0p+Xuc0= cloud.google.com/go/accessapproval v1.7.4 h1:ZvLvJ952zK8pFHINjpMBY5k7LTAp/6pBf50RDMRgBUI= @@ -159,6 +160,8 @@ cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdi cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= cloud.google.com/go/contactcenterinsights v1.11.1 h1:dEfCjtdYjS3n8/1HEKbJaOL31l3dEs3q9aeaNsyrJBc= cloud.google.com/go/contactcenterinsights v1.11.1/go.mod h1:FeNP3Kg8iteKM80lMwSk3zZZKVxr+PGnAId6soKuXwE= cloud.google.com/go/contactcenterinsights v1.12.0 h1:wP41IUA4ucMVooj/TP53jd7vbNjWrDkAPOeulVJGT5U= @@ -604,6 +607,7 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/storage v1.37.0/go.mod h1:i34TiT2IhiNDmcj65PqwCjcoUX7Z5pLzS8DEmoiFq1k= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= cloud.google.com/go/storagetransfer v1.10.1 h1:CU03oYLauu7xRV25fFmozHZHA/SokLQlC20Ip/UvFro= cloud.google.com/go/storagetransfer v1.10.1/go.mod h1:rS7Sy0BtPviWYTTJVWCSV4QrbBitgPeuK4/FKa4IdLs= cloud.google.com/go/storagetransfer v1.10.3 h1:YM1dnj5gLjfL6aDldO2s4GeU8JoAvH1xyIwXre63KmI= @@ -735,7 +739,6 @@ github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3 github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= github.com/CloudyKit/jet/v6 v6.2.0 h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME= github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= -github.com/CosmWasm/wasmvm/v2 v2.0.1/go.mod h1:su9lg5qLr7adV95eOfzjZWkGiky8WNaNIHDr7Fpu7Ck= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= @@ -929,6 +932,7 @@ github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nC github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50/go.mod h1:5e1+Vvlzido69INQaVO6d87Qn543Xr6nooe9Kz7oBFM= github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= @@ -943,7 +947,6 @@ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/cometbft/cometbft v0.38.2/go.mod h1:PIi48BpzwlHqtV3mzwPyQgOyOnU94BNBimLS2ebBHOg= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= @@ -972,7 +975,6 @@ github.com/cosmos/gogoproto v1.4.3/go.mod h1:0hLIG5TR7IvV1fme1HCFKjfzW9X2x0Mo+Ro github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= github.com/cosmos/iavl v1.0.0/go.mod h1:CmTGqMnRnucjxbjduneZXT+0vPgNElYvdefjX2q9tYc= github.com/cosmos/iavl v1.1.1/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= -github.com/cosmos/ibc-go/v8 v8.3.0/go.mod h1:izwHZvn9lKrBn8xWj0aXWut6HKcwHMPD3uyuvOJoPSA= github.com/cosmos/relayer/v2 v2.5.1 h1:gYYD/xywc0Lw3957NmWuyJr9idKQmhgVuVoLIiBNYog= github.com/cosmos/relayer/v2 v2.5.1/go.mod h1:KygWPbGY9ley9Q42CMg5uzmrf4BIe+EfxU5j44xrLRQ= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= @@ -1257,6 +1259,7 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5 github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= @@ -1292,6 +1295,7 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmg github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/guptarohit/asciigraph v0.5.5 h1:ccFnUF8xYIOUPPY3tmdvRyHqmn1MYI9iv1pLKX+/ZkQ= github.com/guptarohit/asciigraph v0.5.5/go.mod h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag= github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= @@ -1965,16 +1969,22 @@ go.etcd.io/gofail v0.1.0 h1:XItAMIhOojXFQMgrxjnd2EIIHun/d5qL0Pf7FzVTkFg= go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.3/go.mod h1:Dts42MGkzZne2yCru741+bFiTMWkIj/LLRizad7b9tw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= @@ -2098,6 +2108,7 @@ golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5 h1:ObuXPmIgI4ZMyQLIz48cJYgSyWdjUXc2SZAdyJMwEAU= golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5/go.mod h1:UBKtEnL8aqnd+0JHqZ+2qoMDwtuy6cYhhKNoHLBiTQc= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2220,6 +2231,7 @@ google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2Pr google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/api v0.157.0/go.mod h1:+z4v4ufbZ1WEpld6yMGHyggs+PmAHiaLNj5ytP3N01g= google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -2247,12 +2259,14 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240122161410-6c6643bf1457/go. google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:PVreiBMirk8ypES6aw9d4p6iiBNSIfZEBqr3UGoAi2E= +google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 h1:W5Xj/70xIA4x60O/IFyXivR5MGqblAb8R3w26pnD6No= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230920204549-e6e6cdab5c13 h1:AzcXcS6RbpBm65S0+/F78J9hFCL0/GZWp8oCRZod780= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:qDbnxtViX5J6CvFbxeNUSzKgVlDLJ/6L+caxye9+Flo= google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c0220f h1:hL+1ptbhFoeL1HcROQ8OGXaqH0jYRRibgWQWco0/Ugc= google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c0220f/go.mod h1:iIgEblxoG4klcXsG0d9cpoxJ4xndv6+1FkDROCHhPRI= google.golang.org/genproto/googleapis/bytestream v0.0.0-20240125205218-1f4bbc51befe h1:weYsP+dNijSQVoLAb5bpUos3ciBpNU/NEVlHFKrk8pg= google.golang.org/genproto/googleapis/bytestream v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:SCz6T5xjNXM4QFPRwxHcfChp7V+9DcXR3ay2TkHR8Tg= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:vh/N7795ftP0AkN1w8XKqN4w1OdUKXW5Eummda+ofv8= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230815205213-6bfd019c3878/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= @@ -2268,6 +2282,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= @@ -2281,11 +2296,13 @@ google.golang.org/grpc v1.60.0/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.27 h1:kJdccidYzt3CaHD1crCFTS1hxyhSi059NhOFUf03YFo= diff --git a/packages/proto/babylon-private b/packages/proto/babylon-private deleted file mode 160000 index 81ee356f..00000000 --- a/packages/proto/babylon-private +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 81ee356f706d6132fd3056f75650ec143448a7dc diff --git a/packages/proto/buf.gen.rust.yaml b/packages/proto/buf.gen.rust.yaml index 25e7807d..78d9715f 100644 --- a/packages/proto/buf.gen.rust.yaml +++ b/packages/proto/buf.gen.rust.yaml @@ -17,6 +17,7 @@ types: - babylon.zoneconcierge.v1.QueryFinalizedChainsInfoResponse - babylon.zoneconcierge.v1.ZoneconciergePacketData - babylon.zoneconcierge.v1.BTCTimestamp + - babylon.btcstaking.v1.FinalityProvider - babylon.btcstaking.v1.BTCDelegation - babylon.btcstaking.v1.Params - babylon.finality.v1.PubRandCommit diff --git a/packages/proto/buf.work.yaml b/packages/proto/buf.work.yaml index a1c77533..5f540ebd 100644 --- a/packages/proto/buf.work.yaml +++ b/packages/proto/buf.work.yaml @@ -1,3 +1,3 @@ version: v1 directories: - - babylon-private/proto + - babylon/proto diff --git a/packages/proto/src/gen/babylon.btcstaking.v1.rs b/packages/proto/src/gen/babylon.btcstaking.v1.rs index cc6ec573..e82ccae1 100644 --- a/packages/proto/src/gen/babylon.btcstaking.v1.rs +++ b/packages/proto/src/gen/babylon.btcstaking.v1.rs @@ -47,6 +47,45 @@ impl BtcSigType { } } } +/// FinalityProvider defines a finality provider +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FinalityProvider { + /// addr is the bech32 address identifier of the finality provider. + #[prost(string, tag="1")] + pub addr: ::prost::alloc::string::String, + /// description defines the description terms for the finality provider. + #[prost(message, optional, tag="2")] + pub description: ::core::option::Option, + /// commission defines the commission rate of the finality provider. + #[prost(string, tag="3")] + pub commission: ::prost::alloc::string::String, + /// btc_pk is the Bitcoin secp256k1 PK of this finality provider + /// the PK follows encoding in BIP-340 spec + #[prost(bytes="bytes", tag="4")] + pub btc_pk: ::prost::bytes::Bytes, + /// pop is the proof of possession of the btc_pk, where the BTC + /// private key signs the bech32 bbn addr of the finality provider. + #[prost(message, optional, tag="5")] + pub pop: ::core::option::Option, + /// slashed_babylon_height indicates the Babylon height when + /// the finality provider is slashed. + /// if it's 0 then the finality provider is not slashed + #[prost(uint64, tag="6")] + pub slashed_babylon_height: u64, + /// slashed_btc_height indicates the BTC height when + /// the finality provider is slashed. + /// if it's 0 then the finality provider is not slashed + #[prost(uint64, tag="7")] + pub slashed_btc_height: u64, + /// sluggish defines whether the finality provider is detected sluggish + #[prost(bool, tag="8")] + pub sluggish: bool, + /// consumer_id is the ID of the consumer the finality provider is operating on. + /// If it's missing / empty, it's assumed the finality provider is operating in the Babylon chain. + #[prost(string, tag="9")] + pub consumer_id: ::prost::alloc::string::String, +} /// BTCDelegation defines a BTC delegation #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/packages/test-utils/src/lib.rs b/packages/test-utils/src/lib.rs index 0f434a7b..5fdb8849 100644 --- a/packages/test-utils/src/lib.rs +++ b/packages/test-utils/src/lib.rs @@ -1,6 +1,8 @@ use babylon_bitcoin::{deserialize, BlockHash, BlockHeader}; use babylon_proto::babylon::btclightclient::v1::{BtcHeaderInfo, QueryMainChainResponse}; -use babylon_proto::babylon::btcstaking::v1::{BtcDelegation, Params as BtcStakingParams}; +use babylon_proto::babylon::btcstaking::v1::{ + BtcDelegation, FinalityProvider, Params as BtcStakingParams, +}; use babylon_proto::babylon::zoneconcierge::v1::BtcTimestamp; use cargo_metadata::MetadataCommand; use prost::bytes::Bytes; @@ -21,6 +23,7 @@ const BTC_TIMESTAMP_HEADER0: &str = "btc_timestamp_header0.dat"; const BTC_TIMESTAMP_HEADER1: &str = "btc_timestamp_header1.dat"; const PARAMS_DATA: &str = "btcstaking_params.dat"; +const FINALITY_PROVIDER_DATA: &str = "finality_provider_{}.dat"; const BTC_DELEGATION_DATA: &str = "btc_delegation.dat"; const COMMIT_PUB_RAND_DATA: &str = "commit_pub_rand_msg.dat"; const PUB_RAND_VALUE: &str = "pub_rand_value.dat"; @@ -146,6 +149,12 @@ pub fn get_params() -> BtcStakingParams { BtcStakingParams::decode(params_data).unwrap() } +pub fn get_finality_provider(id: i32) -> FinalityProvider { + let fp_path = find_testdata_path().join(FINALITY_PROVIDER_DATA.replace("{}", &id.to_string())); + let fp_data: &[u8] = &fs::read(fp_path).unwrap(); + FinalityProvider::decode(fp_data).unwrap() +} + pub fn get_btc_delegation() -> BtcDelegation { let btc_del_path = find_testdata_path().join(BTC_DELEGATION_DATA); let btc_del_data: &[u8] = &fs::read(btc_del_path).unwrap(); diff --git a/packages/test-utils/testdata/add_finality_sig_1_msg.dat b/packages/test-utils/testdata/add_finality_sig_1_msg.dat index e826eed4e5fdca7f4c7db3cd600eb434b53ae0f5..39b0ebaece87188dc97dd96538fe1782af2e834a 100644 GIT binary patch literal 359 zcmV-t0hs;@Dq>=8F>YjaaB^dLaxiOdG<7#?G-@_=Gir8bGd5*pH*ha;pB3UdV?<+|zI>|>-WX*fAXmJXTIIGRqRSK2byFe% zcMRU~9Fm$ye61=x$R4fR-72mD2nrAZ8X&Oq_Vf6+fTI4@t(LcA8h~Jw9lktbQ?;nx zHIYrhN`xXH6HxpDk&T@$(n*RyqoX&}bTlmUNl>?F0cVXtFwIoWA|TEm*-^^ioBqy0 z7{n7Ukp|N57UlsHox>PY+(dQHq?#fiZYKe7HfACLSswS#@EydfM~=^N7+3QlJKzn7{~N!`S^ijs)pF z`Wh<`e%9TOJU*N(O!?PlT!jT>Iw1OVkEJ?#f`R)ZO9-4W^dIlSFarsw6H7{;0^C1! FaK8xco#X%j literal 359 zcmV-t0hs;@Dq>=8F>P~edSrBSd1huab~0^uGHiKlcWZ2McXcvqWi)3rWqEpJGBkM- zAfk9ZUMG$kcOxb@OaVIh`I91Ic`E72HEPv8Bcqxf=on=pAbHxm!UV&lwP0O&{pa1e z;Q8rfP`$`|1#^>pq~WppAu6r`2nrAZ8XzV`&pIbTGdb=C6aDvfb;urV+;A|U+3LE%r!aP)fC zcztKDrzl@!nUeZp;8_QsgBX<%wG<*CSZl7S!od-)z%Wuog%)<0EZuqALwX(8uD9go z8o~siA|R9@5333VhtW&2J)1y=8F>N(%YjS30aCmJuHFbD6H#B22dNpTuIdybwW@IvCYi@UCH#svB zAgh#3j5?g=&Fz3Zt{rvGQ>ha;pB3UdV?<+|zI>|>-WX*fAXmJXTIIGRqRSK2byFe% zcMRU~9Fm$ye61=x$R4fR-72mD2nrAZ8X&Oq_Vf6+fTI4@t(LcA8h~Jw9lktbQ?;nx zHIYrhN`xXH6HxpDk&T@$(n*RyqoX&}bTlmUNl>?F0cVXtFwIoWA|TEm*-^^ioBqy0 z7{n7Ukp|N57UlsHox>PY+(dQHq?#fiZYKe7HfACLSswS#@EydfM~=^N7+3QlJKzf4Fh>NFaA3{PPE+ z77ZL4E=8F?et_HgtJ)W^s6NY%^hccra>VW-v5(Wo2t>dN*!3W_LMeV{LX4 zAfk9ZUMG$kcOxb@OaVIh`I91Ic`E72HEPv8Bcqxf=on=pAbHxm!UV&lwP0O&{pa1e z;Q8rfP`$`|1#^>pq~WppAu6r`2nrAZ8XzV`&pIbTGdb=C6aDvfb;urV+;A|U+3LE%r!aP)fC zcztKDrzl@!nUeZp;8_QsgBX<%wG<*CSZl7S!od-)z%Wuog%)<0EZuqALwX(8uD9go z8o~siA|R9@5333VhtW&2J)1y{ zespvvmV2q0?SsBX0^hycu5JvaIv^Zh|3i1qkWsjdhYYcD|9h^+><=tNpy+JpzskIu FKlHx8qkjMZ diff --git a/packages/test-utils/testdata/btc_delegation.dat b/packages/test-utils/testdata/btc_delegation.dat index 49662fa5fa59b516d48bec41c0cf33479905bc3a..cf80ab51e2dd5a793ac8800f7434ae4720fac087 100644 GIT binary patch literal 3964 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 l?_&LHgqPRr-e*tL+n{{V`?7vKN@ literal 3964 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 diff --git a/packages/test-utils/testdata/btc_light_client.dat b/packages/test-utils/testdata/btc_light_client.dat index c2ea12ee..d11be439 100644 --- a/packages/test-utils/testdata/btc_light_client.dat +++ b/packages/test-utils/testdata/btc_light_client.dat @@ -1,202 +1,202 @@  -04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e684312d5c92c1ab1da689538b6d8b8d1d92a9cbb07c5ed15daa166fe2d8d27677ad1088653ffff7f20ffffff1f@3669410d46fdbf59c521b2948f3986ff43b39d314a50b57c307f1f378f896699"18446744073709551617 +04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e68a1667889e817755d848c5c6b9947e4f48bae0b7b173d4935bfc5ea23543331e23c088653ffff7f20fcffff4f@6f2369690ab1b07e89833138cb0d46b13d1a99d3684ba388a34b88c43a66cc64"18446744073709551617  -040000009966898f371f7f307cb5504a319db343ff86398f94b221c559bffd460d416936b61d02e31e33db91a0f5f85a6108bb2af87db761445e9149524b8726f76bd219250a8653ffff7f2001000000@770372c850910924e6dfc4f03d836bef416f582904bb0f043d13f6f3c8c6b8cd"18446744073709551619 +0400000064cc663ac4884ba388a34b68d3991a3db1460dcb383183897eb0b10a6969236fd94ef66459d5c855d5c15e63042478f68d9329dd4c6945c101c2664534aa58347b098653ffff7f2001000000@073236ed96ce5ef6705a6f3ca74188beecb92b96062fa274dbc72a101b4c90d5"18446744073709551619  -04000000cdb8c6c8f3f6133d040fbb0429586f41ef6b833df0c4dfe624099150c8720377966e546f76c22d478a49b909cf0e7a09cc20a72b01f68339f611c75afeecf1e4a80b8653ffff7f2000000010@668782f1d8565eb42b53d0f41b1d6af948875a48ea717aae5fec5d352a5755b4"18446744073709551621 +04000000d5904c1b102ac7db74a22f06962bb9ecbe8841a73c6f5a70f65ece96ed363207b3e66352d83eed0b87c159a14f514cdb5590d54283e8fe89c31f452ce560143ded0a8653ffff7f20feffff3f@2c8e48915c772447f1a58bce9161c8fb052df1c704f792668f3bb8cf0856b5b4"18446744073709551621  -04000000b455572a355dec5fae7a71ea485a8748f96a1d1bf4d0532bb45e56d8f1828766fad0b545c6571bd6a6fccdd1881edeb11afc0bf5b85523aa8716be07e143012f790d8653ffff7f20f3ffffef@18ddc988ddb27297063b47871f6fcf7cc6eff37fb29d47089891b920067d42f2"18446744073709551623 +04000000b4b55608cfb83b8f6692f704c7f12d05fbc86191ce8ba5f14724775c91488e2c1877b4acdf0e65cc79a090d802f7c8806304903cc7ee55ab1644d6414c5ba623040d8653ffff7f20f4ffffef@1563aadc29a298787a1ef349e9358f254ddb73fd3fec53341a83316e133b57bc"18446744073709551623  -04000000f2427d0620b9919808479db27ff3efc67ccf6f1f87473b069772b2dd88c9dd180dc729ab179cc91272e61153a9d5426023ecc47da1c22f8c143e786e58e5e6327e0f8653ffff7f2000000010@75035bf44c46283dddd82cb16dde710e0ce63debf97a530b4ea9ef447dcbb8a1"18446744073709551625 +04000000bc573b136e31831a3453ec3ffd73db4d258f35e949f31e7a7898a229dcaa63155b848d2d5567b4ef78aa1506ece17cbaf948f365dfa85e9b6e1726c72b7824243f0f8653ffff7f2001000020@42def2dd2389189f3f45d8d5bc8da6f218f26eba1967ff59c469a5e9f4602de5"18446744073709551625  -04000000a1b8cb7d44efa94e0b537af9eb3de60c0e71de6db12cd8dd3d28464cf45b03751ccb0e8587789a3334229d1a162c169709b2bb36811e90d0abb7f1f6d8f4798e91118653ffff7f2002000000@1724626a1cafd9fc0ee661a65b204f89c417a9dc43a5cce482ed01e8719b8a97"18446744073709551627 +04000000e52d60f4e9a569c459ff6719ba6ef218f2a68dbcd5d8453f9f188923ddf2de427bf13e12892b79ea5704a22f263a53c5731f8f8b0aa94bc99b36d4a8b1fac83ff6108653ffff7f20fdffff3f@594f699b1e85ca7c8d4d6c127242614dd975338b9f3334adaa8968f0bbdfc534"18446744073709551627  -04000000978a9b71e801ed82e4cca543dca917c4894f205ba661e60efcd9af1c6a622417a80e9714cc66dbf364d5e3b977a877a4d7087165e1b41ddcdab37e220dc5aa4c54138653ffff7f2001000000@25549d5231448fb103c7a9aa4007aa27d8286d9b0a77607fa4ae0d08547313b7"18446744073709551629 +0400000034c5dfbbf06889aaad34339f8b3375d94d614272126c4d8d7cca851e9b694f591510b0080280f40631c1de2ee0f4c7b3a46ccba43b1a4b6ae28450d292d76699a3128653ffff7f20feffff3f@3a925583e9a9e2e4a492728f1b84a2687ed362cda9c9fadc07e280dd4bab982e"18446744073709551629  -04000000b7137354080daea47f60770a9b6d28d827aa0740aaa9c703b18f4431529d5425632aae94d7b8ed7ed72321f3765bf3c45888e83d707998c2489c118610796b28fb158653ffff7f20f2ffffef@119b6276b2eab0c978a70d5e3c863be8daf37903ddcad58844b4f21088883b59"18446744073709551631 +040000002e98ab4bdd80e207dcfac9a9cd62d37e68a2841b8f7292a4e4e2a9e98355923a2fd4d5ad7604da3aee2ce92c8fecbed45b0082c2d92162573c249b8c19bf179399138653ffff7f20ffffff1f@422d8bdc84d59bf2e9af2ad259a24661bc96df3d5c75a656c8e4de75562daa37"18446744073709551631  -04000000593b888810f2b44488d5cadd0379f3dae83b863c5e0da778c9b0eab276629b112d8ccaa347fb9e1b129d4f62db6bcea29daf8d22d9ba2617ccca61e76992032481178653ffff7f20f2ffffef@1c094a9b65c89c26933b1ea382aa6fdefe6c9bacbf7009c3d5fc76b192ef79ea "18446744073709551633 +0400000037aa2d5675dee4c856a6755c3ddf96bc6146a259d22aafe9f29bd584dc8b2d42a7e2e286777332008e752e919f9ed77069456a1c7da5fa33ab88e370cdcbf92df4148653ffff7f20f3ffffef@0ebfe718a72377030b4b717749577bb242870ca177b212f8688baa5fd636ccb3 "18446744073709551633  -04000000ea79ef92b176fcd5c30970bfac9b6cfede6faa82a31e3b93269cc8659b4a091c919279b5a12e6171f8327085f969bb261b0d9643d4289d17bc8b2e7f6fa156d8b1198653ffff7f20f2ffffef@6aec1583e223854dd513ea6bd0dd77047b2570625862b876a41bd4d6583b9c0b +04000000b3cc36d65faa8b68f812b277a10c8742b27b574977714b0b037723a718e7bf0e63b2b3225efb4f23be7576b2f6b6d32ab2dbbec1cc2e9abecd5b2caf6bb990f037168653ffff7f2001000000@135bb2b6bc9b19d35dd38e1b90710a61165ff225ea08ca79180364192c35ff8f "18446744073709551635  -040000000b9c3b58d6d41ba476b862586270257b0477ddd06bea13d54d8523e28315ec6a17ead191c679479f1edce3368e10830cfb85b46b30f97aa6a054c09f554dd241b81b8653ffff7f2001000010@392de3402fe87f3be6495ed66361f772fb8e75fc366247af337805f63e7d48e2 "18446744073709551637 +040000008fff352c1964031879ca08ea25f25f16610a71901b8ed35dd3199bbcb6b25b13cd1ab852dfb3fecf3c56b15f71c861de19159ec345fe81b26b72422169d5c806de188653ffff7f2002000000@18f800d0331ac34b61f86773a10e588091a0a15d9f00217f8c5f22da6e7760f5 "18446744073709551637  -04000000e2487d3ef6057833af476236fc758efb72f76163d65e49e63b7fe82f40e32d394d94c0112f8b2370467a230c9f56ea49c82e73f44b9718cd6ba601c93024ea33c51d8653ffff7f2000000030@1f06dde32123dc57e36540fcf7a75a52984c59c8f30dac053b692c8afbc48310 "18446744073709551639 +04000000f560776eda225f8c7f21009f5da1a09180580ea17367f8614bc31a33d000f818ba4488fe83c0492aa1f6a6678d5ee99df72569f3807a0466a92cd3660a110656631a8653ffff7f20f2ffffef@68cbf96c70c483dbee28cc0ba29bd769e25c6b7c30e5640603b7d212437078e0 "18446744073709551639  -040000001083c4fb8a2c693b05ac0df3c8594c98525aa7f7fc4065e357dc2321e3dd061ffd10f3b7be4621092e44fbf02ed9235fc1bef44747f5737503c98a97d731853c411f8653ffff7f20f3ffffef@2ba4f814a8cbd370a52c13c4b8abb0c2858d66c334b3e1e031da515155c91e47 "18446744073709551641 +04000000e078704312d2b7030664e5307c6b5ce269d79ba20bcc28eedb83c4706cf9cb68d117d168df6aea78da9c530776dd5d55218003482d2bcd16481b8d3f9f4b5c9d991b8653ffff7f2000000010@1e655512993a3ae149829e0597ff79a780841c27ec7993409b391949fb4a9700 "18446744073709551641  -04000000471ec9555151da31e0e1b334c3668d85c2b0abb8c4132ca570d3cba814f8a42be3846244d67441e5dbbace0de8f40979ffaec5f38b4e8ac46656dd3d09f411275d208653ffff7f20f6ffffef@20ef1480bfc1f887704cb26fc5c80c84dd608525f00abb3fe79ac8028af32f8f"18446744073709551643 +0400000000974afb4919399b409379ec271c8480a779ff97059e8249e13a3a991255651e81ea534dceb037f58db3a654d412b537b8fed69200435546c61d9baf524105bfa41d8653ffff7f20f5ffffef@1775a8eb456862472d05c1d0d9a45af26755dae9a7f996edb601eea2de93d845"18446744073709551643  -040000008f2ff38a02c89ae73fbb0af0258560dd840cc8c56fb24c7087f8c1bf8014ef20c7dd66b12e2e4d5f08a2025a5f3159ccd07c4d9207cdc3f81dd67cc7dedd5e48a8218653ffff7f20f2ffffef@5d0ef7b653bb469ee6827484c4aba568542867ce5487580863d905e6900ad712"18446744073709551645 +0400000045d893dea2ee01b6ed96f9a7e9da5567f25aa4d9d0c1052d47626845eba87517127630c20627b26b0a5fe2001bf3ee724402c543c513a25e1524deccd4252eb75d1f8653ffff7f20f2ffffef@778fa7cfba092c64de81497657de9e896bfbdd06e6908e538804021c583eba3b"18446744073709551645  -0400000012d70a90e605d96308588754ce67285468a5abc4847482e69e46bb53b6f70e5d261d8090a3e468bbe9ad1f725a39748c6ddf89601b7683f559bab5d2e59e1a3d3f238653ffff7f20f2ffffef@79384b1b9be2163f40fffa484d70980500441fb3d5fb2a68e097adfe726b1d3a"18446744073709551647 +040000003bba3e581c020488538e90e606ddfb6b899ede57764981de642c09bacfa78f77e1eb5a02d3440657f3e9e44eef508f4a18017bd4ef3394f2b28ed0fb12f7613984218653ffff7f20f2ffffef@0d42000db1c84fbb14f8086870c504d89280f98068e98bdb5fb1d5aafb9420c5"18446744073709551647  -040000003a1d6b72fead97e0682afbd5b31f44000598704d48faff403f16e29b1b4b3879b39d9641719b6d29e177f4ecc1ed5c2ba0d81e78c045991228f4260ae04fb031ae248653ffff7f2001000030@589c909bbc95ddf61e00982500224d80d00a115e736593b9826b80b2983baa5c"18446744073709551649 +04000000c52094fbaad5b15fdb8be96880f98092d804c5706808f814bb4fc8b10d00420d428f2f0d0c49adab6cc895ab242e959b1bc56c93081b0d111018ec3b8d60c254d3238653ffff7f20f3ffffef@1977879546e46b6592e58be83b3a1eb90cf094bb15214a8cd4e63003d9fcdda2"18446744073709551649  -040000005caa3b98b2806b82b99365735e110ad0804d22002598001ef6dd95bc9b909c580994cbacdf5ec68799d0654d5d99d80ec670f03c3150a8f9089a09cae472bdf7f4268653ffff7f2002000000@4213723fa4288edb3b382bcd4c70cdd2a61a66ad66dedf8a31bf6c3324e11bf6"18446744073709551651 +04000000a2ddfcd90330e6d48c4a2115bb94f00cb91e3a3be88be592656be44695877719bf56c2771aedd68aff09938d5cf98061998cdc438ad593ac5776cb6a5597407f63268653ffff7f20f2ffffef@79d9c72935553ac5c7b973bdfd7d0c96b9b64ac2e02176e1a9f32d7bdfbe8f46"18446744073709551651  -04000000f61be124336cbf318adfde66ad661aa6d2cd704ccd2b383bdb8e28a43f721342d0479e809b6cced456583d616cbe0b59740f9a50243fd30594bfbc8941deeaac88288653ffff7f20feffff2f@743bbf1bf1e575771d79bad6529713665b140be4085be6ada8cdd0d95849744a"18446744073709551653 +04000000468fbedf7b2df3a9e17621e0c24ab6b9960c7dfdbd73b9c7c53a553529c7d9797277942840fa19cbb099bc09d705a9a5e90728dc9819ed001a78df971004824709288653ffff7f20f2ffffef@0475382d57c451eac1ab5ad6200b4b32ab31de12c732e95d90d53564df68a73f"18446744073709551653  -040000004a744958d9d0cda8ade65b08e40b145b66139752d6ba791d7775e5f11bbf3b747393deb15052545d5e7ff1201180b754a7d3e15acbe223a6a9af5ca3d2196c87352b8653ffff7f2000000010@62c706957438b5520a799c96bcaf4ade59a4889f76e181f41207350057b8f585"18446744073709551655 +040000003fa768df6435d5905de932c712de31ab324b0b20d65aabc1ea51c4572d387504aa4bff0c2461c286d5318b8ca4a0e2a767c714ef9127db2ab2e9509452fe6dc4d0298653ffff7f20f3ffffef@3b24041544e0460f822c4d12e2ae513e8af9c718c73f7f164ceea8b27697110c"18446744073709551655  -0400000085f5b85700350712f481e1769f88a459de4aafbc969c790a52b538749506c762cc93f9245ca6fc0d1b82cb3a575b192108954fb5ddec6ede19fbd80ae27ad6b15c2c8653ffff7f2002000000@7e71ba2038685504e4fa803ad44000437d6b97c3579d0da5db47373d66822bc0"18446744073709551657 +040000000c119776b2a8ee4c167f3fc718c7f98a3e51aee2124d2c820f46e0441504243b85a95642866c3b10c4467042a07434dd46f9c2fc27c4737d466629f22ef0c9acce2b8653ffff7f20f2ffffef@62dedf05ddfb9c73fe41f5a19c6eb4f023219fdd8b7ec01197012e8bd1bb48b3"18446744073709551657  -04000000c02b82663d3747dba50d9d57c3976b7d430040d43a80fae40455683820ba717e6fc2585661a5e1bae9dad1cd261da59893f1bc8dd42293000af6665ec3ecb9e10d2e8653ffff7f20fdffff3f@4da25696bba59e5e75a3ef2ce365fe0ea6ef3ebfa0dcdd71539f715af93a67c4"18446744073709551659 +04000000b348bbd18b2e019711c07e8bdd9f2123f0b46e9ca1f541fe739cfbdd05dfde62fae6e276583ced3d5283a21a1f17e6e9d466e202e58b2246ec7014001ee997b9fb2c8653ffff7f20f2ffffef@04302933ccf7755743a2f31d1274c14a1fa5c1c1f67a7cf452dc0932deda3849"18446744073709551659  -04000000c4673af95a719f5371dddca0bf3eefa60efe65e32cefa3755e9ea5bb9656a24d436844ef7bb2198755588c98c5090cf5899f0b2eef299bcd11ea2909ebfaf0a466308653ffff7f2000000010@19ddc4d0ffda38fa9e307050af30c8abc093ff2cfe6b283b901652e5ce812813"18446744073709551661 +040000004938dade3209dc52f47c7af6c1c1a51f4ac174121df3a2435775f7cc332930040862ebb137afcca783474902cc810b2df13f6cc1553ce1c5ecd690ad15fb5cef522f8653ffff7f20f2ffffef@71090cd2da07f31f00cf51e2cc8de3dcf040248379f936caeb699ff6bb0dba5f"18446744073709551661  -04000000132881cee55216903b286bfe2cff93c0abc830af5070309efa38daffd0c4dd19643bb81fdd3267ba12c12c4f46c93c521310a0222af0f58a6d09d6853ddc88c89c328653ffff7f2001000000@14b3aca6487318fa4ced821814ac64f64b0dddc4e60d1822858696dfd5e7474a"18446744073709551663 +040000005fba0dbbf69f69ebca36f979832440f0dce38dcce251cf001ff307dad20c097145529e5786cc3c79080822a2ddf1f459a9fe4c6f85c24834b881c9fcfef63fdcee308653ffff7f20f2ffffef@234738a8f5672285b9a8cdd0d83489c73cdacb885ec67f7ef752ae66e07ed7e0"18446744073709551663  -040000004a47e7d5df96868522180de6c4dd0d4bf664ac141882ed4cfa187348a6acb314ba64ce7a0b1309a6cb8edc155dd638bd0db362203036816e95a3a6cff68403581d348653ffff7f2001000000@7f4118c47f66bd7cdac37fff438815cd110db7ffa87745a5afb6374d904fc701"18446744073709551665 +04000000e0d77ee066ae52f77e7fc65e88cbda3cc78934d8d0cda8b9852267f5a838472335e02cc5db12660d6423d8e2b046179e829aa2cb327b7ccc349dd9b482f41b69b0328653ffff7f20f3ffffef@54d2e65cba6d9691b6301a684b50b0f59a07f6e105ec7a75be8f71e361394848"18446744073709551665  -0400000001c74f904d37b6afa54577a8ffb70d11cd158843ff7fc3da7cbd667fc418417f6d1fc779fe039c991d39ed5ca4046892981a7307a341ba2840e38a24a33e7a87ca358653ffff7f20f3ffffef@414228c922386fc377bc5f4ac8ebb64e9d2818802460f89a6e642587e8892005"18446744073709551667 +0400000048483961e3718fbe757aec05e1f6079af5b0504b681a30b691966dba5ce6d2542b74613cb405829e72f348e7917782e84ae6a42638afbdc81a65df5fc27f2be639358653ffff7f20f5ffffef@75056e4410e8070449b4e62f96645718558f2c6b6e6428c751b55ab50da97f8f"18446744073709551667  -04000000052089e88725646e9af860248018289d4eb6ebc84a5fbc77c36f3822c92842419a72c457983d1c24f0867d3b41cc07639f2276d46b1689272db027593fec01a7b0378653ffff7f2002000010@36c018b6b6896fb9463af3534d21dbfbf14c6b4a73cb3f7acd832ef9591ebd5e"18446744073709551669 +040000008f7fa90db55ab551c728646e6b2c8f55185764962fe6b4490407e810446e0575bfe4b216c61de4c3c6f3ca67c5c0c31224436489c96c0be012121868b06e4eabda378653ffff7f20f5ffffef@64d1001e5342a70f5c45202138cb93e7263b682c14609390434d503c88c94a3e"18446744073709551669  -040000005ebd1e59f92e83cd7a3fcb734a6b4cf1fbdb214d53f33a46b96f89b6b618c036eb541a5b909b23ffc64a66ab62c6e400f01ead3c29409398afb532fdd8d33c63493a8653ffff7f2003000000@1952eff1a1cc568e9f18ddba0a4d130c41c2247c83a9666cf5f823960922e589"18446744073709551671 +040000003e4ac9883c504d43909360142c683b26e793cb382120455c0fa742531e00d164ec14595095e242890240081bacfc6bc71bd6f413ff3343591f4327006c151cddc4398653ffff7f20f4ffffef@77f4a115976c8325bcbbeff13d66add988295a4521ad945dd55e878956ed13ac"18446744073709551671  -0400000089e522099623f8f56c66a9837c24c2410c134d0abadd189f8e56cca1f1ef5219071c2450d0c064c31045f4633eb680cfd4cb19d73b10d77e5ac5c36e9baacde0a53c8653ffff7f20f2ffffef@4c15c7e2bc66831a54fffabf66533ea4955a4bc1470d134438787d884787d35e"18446744073709551673 +04000000ac13ed5689875ed55d94ad21455a2988d9ad663df1efbbbc25836c9715a1f477bb4bf8493433201775c97709b7b5c2bb7742d4b2789e150391c10c2796a2b256653c8653ffff7f20f3ffffef@026f0ab78e429e3e4b6647afa0186ef17afcf63ed5553d1bba7e9ae2c9b97d38"18446744073709551673  -040000005ed38747887d783844130d47c14b5a95a43e5366bffaff541a8366bce2c7154c3294f150efc978fdbae43b6f89255ea80fa4985536b849f4f930f51f7a8ade90233f8653ffff7f20f2ffffef@0dce67787d316ec184b538ae3093891b6f518a63d06fa642ff1b388a39c41715"18446744073709551675 +04000000387db9c9e29a7eba1b3d55d53ef6fc7af16e18a0af47664b3e9e428eb70a6f02bcfd191345f767f6725e3e96c149bb1a14fd4a76741a98c98e81072057dcca09d53e8653ffff7f20f4ffffef@11ed5d7d5444f642bcce009d8e300ba80645f796bf0e52d4895fb4ff2302149e"18446744073709551675  -040000001517c4398a381bff42a66fd0638a516f1b899330ae38b584c16e317d7867ce0d9c88d22df669112ad0be6e98fc4fd1d7b1d95d0dc578cc9a8793895edfc3999d14408653ffff7f20f3ffffef@4ac676b5020b4a050494ffed1e616406458d5ef5818bd96f209b0d265e6cebab"18446744073709551677 +040000009e140223ffb45f89d4520ebf96f74506a80b308e9d00cebc42f644547d5ded116fb4a2f10afc162f9968f4e93c99113240808b0125edd3a24fe49982a6c833d05b418653ffff7f20f3ffffef@7804f5785195c20ee9dcbf518a46a5452c2808744f3b3c535a68d8f432352691"18446744073709551677  -04000000abeb6c5e260d9b206fd98b81f55e8d450664611eedff9404054a0b02b576c64a3a2c06aca28ea4006932fe3c369afd34e4cce14d5ef83cfab44b504d8eb2ba7569428653ffff7f20f2ffffef@0d648bcdb0f444d82772f8c9fd018e3b1843f4c4113521777789d2849e19fe90 "18446744073709551679 +0400000091263532f4d8685a533c3b4f7408282c45a5468a51bfdce90ec2955178f504789e3526d9632756969af18f5df92fc8172446c021da413e912582566b3ecfecfdb2438653ffff7f20f2ffffef@44a129a72d16a06c236facd33ae87edfb206c160add1c479246cb2266b083a08 "18446744073709551679  -0400000090fe199e84d2897777213511c4f443183b8e01fdc9f87227d844f4b0cd8b640d36d8870a5b9c1b40ca3724ca579a9d51e60ed36ef69da608e5fe1dd9a7f98c2bed448653ffff7f2001000000@5ebf25fe728fe32caaaeb33a579260f21847c2d98ba015b7513f802f073b82ea!"18446744073709551681 +04000000083a086b26b26c2479c4d1ad60c106b2df7ee83ad3ac6f236ca0162da729a1445e99336d57b3a69af3f85ad4bfa386f8ec844122ceb35c1350099432f274e8e637458653ffff7f20f2ffffef@5df4e4278214d7e23f5fcf3e55fd1c78d2f63444516b952a02066e7255187bf9!"18446744073709551681  -04000000ea823b072f803f51b715a08bd9c24718f26092573ab3aeaa2ce38f72fe25bf5e37f420f5d0b5beac1a8551697a4a48f830636e52f7a512d401cfa6875489aabdb5478653ffff7f20f2ffffef@384ae4750b6840e7f878509ed6bc82923a401e55b647cba285c4a0cd1e50fca7""18446744073709551683 +04000000f97b1855726e06022a956b514434f6d2781cfd553ecf5f3fe2d7148227e4f45dc120255eed732d073c70807f9d1568c7601dd16e2a86d6b3f03eb11cd83c6039a2468653ffff7f20f3ffffef@690cace9023c434d5dbb9a1b729d688b4246ff41f9f8cb1ad7e35f2bece4595c""18446744073709551683  -04000000a7fc501ecda0c485a2cb47b6551e403a9282bcd69e5078f8e740680b75e44a38727647c7985f426498ea5fd06a47513a3f5e991c6c121e292c65fe0c3c8c4621d3488653ffff7f2001000030@3b6307f172b20697b8a0ed81847409b23d5758fbb9421e327d6d82d8a41c0b58#"18446744073709551685 +040000005c59e4ec2b5fe3d71acbf8f941ff46428b689d721b9abb5d4d433c02e9ac0c6914ea9dc09fe70b769fbe19280f3e1d781a2de3732c5fd0efcd9133c0079cb04b6c488653ffff7f20f2ffffef@1f388b72c51842f010e845a159653f7bf32c2c8a16dd6fe81856f64c757d4443#"18446744073709551685  -04000000580b1ca4d8826d7d321e42b9fb58573db209748481eda0b89706b272f107633bf70c51a1de5fd81d355fdb78c86a5066e3a3621c50632f4432cf2859d0c999d1bd4a8653ffff7f20ffffff1f@6dc440fc329efb80becab44b264c54941a0f73921cfaa87c06d6daebdf467db2$"18446744073709551687 +0400000043447d754cf65618e86fdd168a2c2cf37b3f6559a145e810f04218c5728b381f64e6d62dba8e2623a2eb6a4702a4da4d89e48277915e494c53f42c50e125c635d8498653ffff7f20f4ffffef@616bf3fae61adffaf7d12ce3536ef91172d53c3b32fb414014d02b595de6e9be$"18446744073709551687  -04000000b27d46dfebdad6067ca8fa1c92730f1a94544c264bb4cabe80fb9e32fc40c46d36c8b7d6e01dff48c720fcb52b7b6e6cb3187205dbbfc2b975f52f8b904d68e6274d8653ffff7f2001000000@241c5fd1556b591c9534273d584d0338e0f8ce99a53a55b6b93669f022911e1a%"18446744073709551689 +04000000bee9e65d592bd0144041fb323b3cd57211f96e53e32cd1f7fadf1ae6faf36b6129bedb3d381553128bf73268e9f738721a158ceaa0f77edc86ec15cb26d18674cd4b8653ffff7f20f3ffffef@2f710614d99b7b31e13504271986368aad576384c2ceb7c45b7046e403eecd4c%"18446744073709551689  -040000001a1e9122f06936b9b6553aa599cef8e038034d583d2734951c596b55d15f1c24a18cd5e2614fbd60e1703e7da7403d45f9b5f04e57aef3ef8875d8e6ec374cba654e8653ffff7f2005000000@6ce19fe3323caea44d9c53e4b185df7948ed03db1c395be35aea396db3b0560f&"18446744073709551691 +040000004ccdee03e446705bc4b7cec2846357ad8a368619270435e1317b9bd91406712f1ec889fbb9d4681374f3b8178e8843c3a66771bce72c32836284b8ce705ebae9f64d8653ffff7f20f3ffffef@6481e061676e9136c20ef72660b1e4264e8924fa06310a30001dcba7a7060283&"18446744073709551691  -040000000f56b0b36d39ea5ae35b391cdb03ed4879df85b1e4539c4da4ae3c32e39fe16c4a599e624ca4ff9feb763a057bab5c6fc35a77560559e1575ecd53d4b57daf6d11518653ffff7f20ffffff1f@509f6913ea134908803ae9474198f2cd60e7de856d4c766fb30bf7b257a18c57'"18446744073709551693 +04000000830206a7a7cb1d00300a3106fa24894e26e4b16026f70ec236916e6761e081643d02173fd97c3779912580260f03e91297bc9a9e9072c8dc7362727a0a9db018b7508653ffff7f20f3ffffef@7d9843e058abfa07a36f17f9bf9d80e2831e44f7e28dd0fefd6915cb1867ae8c'"18446744073709551693  -04000000578ca157b2f70bb36f764c6d85dee760cdf2984147e93a80084913ea13699f501c034c8943ce0b0855e9e14fcd3f6e8915a26c842df334f94dd3df0846ea94250c538653ffff7f20f3ffffef@6ee01cfad9229d95d4d53dbe3df9987dd88ca3fcadab81139aa17231c08e8b46("18446744073709551695 +040000008cae6718cb1569fdfed08de2f7441e83e2809dbff9176fa307faab58e043987d7f0260a4701a97320c2c7519848594816e16895b137b496f36c7dd84a9d007c93c538653ffff7f20f2ffffef@6efa0b1b9365d599145972e15cd85db1ed4a2ee792dd0cbb74f66133701e2bc0("18446744073709551695  -04000000468b8ec03172a19a1381abadfca38cd87d98f93dbe3dd5d4959d22d9fa1ce06e94bb1ae02da6dea2953ba72c43f9e2954c79d14561268d462d35248ac5ae7f5560548653ffff7f20f3ffffef@48dfa31bb1d833bb0dad591efbeb5e58351ec5c49617eebc33e7f050d55eff58)"18446744073709551697 +04000000c02b1e703361f674bb0cdd92e72e4aedb15dd85ce172591499d565931b0bfa6ebac165f41f067a1f7f3e8ff61cd3fbb546b823482d626686956a31b0d5b11831ba548653ffff7f20f2ffffef@2874992f20d46957cd9baebe4752b670012b3f49028363c9935ef1f1e1afa6db)"18446744073709551697  -0400000058ff5ed550f0e733bcee1796c4c51e35585eebfb1e59ad0dbb33d8b11ba3df48a842ffa379f019db4ddeb69a4d6ed24abc78212cefb93951f8ddf61964f83c9ac2568653ffff7f20f2ffffef@652a0345f3af7473c0a5f799995b15d1a68baf38a3c62f0821625bff5f2cfdaf*"18446744073709551699 +04000000dba6afe1f1f15e93c9638302493f2b0170b65247beae9bcd5769d4202f997428b77ab4536fe52d5e31e05e54993c50328ebd3779439a8c863987ca192a4ef54e62578653ffff7f20f6ffffef@3cca566aaaab7644d7323a87c2491e8486ac20a6703b594b84486d630309fee0*"18446744073709551699  -04000000affd2c5fff5b6221082fc6a338af8ba6d1155b9999f7a5c07374aff345032a651789c33d0cb5f51b131fe3f6e40e475f364b18daae9bd357cd06658a66a177bb9a588653ffff7f20f9ffff7f@28c27779c6a6ce44b29fcbb2f6a1d11166dfb9324761b2b7428e7b793a707c01+"18446744073709551701 +04000000e0fe0903636d48844b593b70a620ac86841e49c2873a32d74476abaa6a56ca3cb4a6a7695cd7e34fce643ef2e0c33b79f0abcac0eb3bfbf351e6d1f2c9368a07ab588653ffff7f20f2ffffef@1a387c6284f16540977e89b21d14774e380621ecf0b14ff2a0e58d01a9901b35+"18446744073709551701  -04000000017c703a797b8e42b7b2614732b9df6611d1a1f6b2cb9fb244cea6c67977c2288ff32c5c3acc6475b2e85d4de18c501a6142ad21400c90da2442dbf52e5793c896598653ffff7f20f7ffffef@4f33512dafbbb67039558fe5038a33d5b16b6028a94d5502bbe8bb4e1584d0ba,"18446744073709551703 +04000000351b90a9018de5a0f24fb1f0ec2106384e77141db2897e974065f184627c381a93c77ee33c46c0737b6934484d8fc4b9fd4e2f2d7dffbbbf5656e44115c7da20455b8653ffff7f20f3ffffef@767de6614417ce9578b0ddcdcd79bad9e30b809fd771c5d898f7f278c8330734,"18446744073709551703  -04000000bad084154ebbe8bb02554da928606bb1d5338a03e58f553970b6bbaf2d51334f518bf31df7f56f8bda5fd79db2fef4714182e5e5fbe694997addb49fc25c2f90fb5a8653ffff7f20feffff2f@229e079f55a5db76538b9ed0eb9cf555a2242cf548811fafef9d719d6ea5cab4-"18446744073709551705 +04000000340733c878f2f798d8c571d79f800be3d9ba79cdcdddb07895ce174461e67d76402d14b69d63c8b422c9062919f884405ee0caddc5dc591d17bd796a3b515ad0855c8653ffff7f20f2ffffef@59a28c5549ca085f587410f8c6f7a2f8b916ef41b69adeaf0c609fb82993c98d-"18446744073709551705  -04000000b4caa56e9d719defaf1f8148f52c24a255f59cebd09e8b5376dba5559f079e2287ff63291022e958b12f5460c40048c4814b1a011c41f3a9192684d1df5783dd1a5d8653ffff7f20ffffff1f@55ed696f170cae93529487549794ba21fc7d4ee1615b80fd456b9cb3a6e0fa1a."18446744073709551707 +040000008dc99329b89f600cafde9ab641ef16b9f8a2f7c6f81074585f08ca49558ca259461a068214db00f83d3f452869ad3f16cd91c15e0d68d714ebdd7d4aca2c79a7975e8653ffff7f20f4ffffef@1957a363ae5401bdd96ff31c7224b26611300f682c767c4e37121cdd1d02b093."18446744073709551707  -040000001afae0a6b39c6b45fd805b61e14e7dfc21ba94975487945293ae0c176f69ed55d129fc23f2524f7829c9a92f7be4c55fd7ec18bc7fa16734ccc40cc80ab08e72795f8653ffff7f20fdffff3f@7316ba26a305c69d092e3e903e76689b099a5a4994ada4ec817f9552fc763dcc/"18446744073709551709 +0400000093b0021ddd1c12374e7c762c680f301166b224721cf36fd9bd0154ae63a357193ce252af390ab65685e4c79e2729f2d42cc1a9376a50655ceeb65e78bc81aad1895f8653ffff7f20f3ffffef@0cdcd0f50795300c828711c1e16923ddfa196f9981ed6a02c531ab503d869a3d/"18446744073709551709  -04000000cc3d76fc52957f81eca4ad94495a9a099b68763e903e2e099dc605a326ba1673fb812aaba13fc10c59778ea9ae06dcfdb823635c38d8543dde467a6ebb1d9fb2f1608653ffff7f20f3ffffef@3117453181b8bd5136603657ed55cc5d8db191b8fa1d6b063faebd6b2b6566c30"18446744073709551711 +040000003d9a863d50ab31c5026aed81996f19fadd2369e1c11187820c309507f5d0dc0cb05387e303043554eac21082b2bcee25039ab8e2eea1d0bad0d2d01eed16a3ae9d608653ffff7f20f5ffffef@40e2767015136ebe61c2b4fa0c8c4253dbfbbc4c13c38274c5754880e99341da0"18446744073709551711  -04000000c366652b6bbdae3f066b1dfab891b18d5dcc55ed5736603651bdb88131451731fefe64cd031b4ed8fbdb820a0397975b1f2af9f16cb510fdb94059c421d39b343d638653ffff7f2000000010@01ccd4c3f0eea061efb580943cab450b751bc378172c31910e52353cdcf00ed51"18446744073709551713 +04000000da4193e9804875c57482c3134cbcfbdb53428c0cfab4c261be6e13157076e2400ca73b819ce61e253bda35472a365733021d4f8f60a2e0ef907a97d5f0c25fe362628653ffff7f20f3ffffef@619c1866eba8304466710f6044ca52dff718933818d01d2a3b3ca9babbffd19b1"18446744073709551713  -04000000d50ef0dc3c35520e91312c1778c31b750b45ab3c9480b5ef61a0eef0c3d4cc01ec32f3f0532ca6a92214fb88f990e94941fb74c147554233738ba2a93756026b79658653ffff7f20f2ffffef@15ede1e4bd99a915e380912ae013980555248a78d1d8115eea2620a2c82b4d102"18446744073709551715 +040000009bd1ffbbbaa93c3b2a1dd018389318f7df52ca44600f71664430a8eb66189c61b0b3fece993527dafaf712039cef847c5ccd0d4e511c293bcbe757ad47f07febd2638653ffff7f20f3ffffef@50751630883f022eb9eaeebb2791dfd8ad4237c6cbe9cc887e14a20542042fff2"18446744073709551715  -04000000104d2bc8a22026ea5e11d8d1788a2455059813e02a9180e315a999bde4e1ed1597206a8e4a98dbe757b767ac8701a9898e1a3ebb2162b664239034b3d1c7346375678653ffff7f20f4ffffef@3c771dd18323e3f826ca0dc1771148536c4c524ef6f250f2927da5074652144b3"18446744073709551717 +04000000ff2f044205a2147e88cce9cbc63742add8df9127bbeeeab92e023f8830167550be26fb0978ae8f012554fbececd8a2138b77ccb028984cd94f1580de925958a69b658653ffff7f20f2ffffef@0b8e034507174da53de8e86ee1c3dcd89c3dce5e4ec02efc330eb469a6be1e933"18446744073709551717  -040000004b14524607a57d92f250f2f64e524c6c53481177c10dca26f8e32383d11d773c17fb32de93d9a390596e50c947c0034532bfaa2d12c976b3e8285968507a45919f688653ffff7f20feffff2f@5b6c90a5993782e32849fbdcfa4e1019c8e71d595809b9bd2963a6ae16770a354"18446744073709551719 +04000000931ebea669b40e33fc2ec04e5ece3d9cd8dcc3e16ee8e83da54d170745038e0b3e0ba1b8d16148e558fb593c8f22b1bf789d32efb2f4f7ecb31e443623634879be668653ffff7f20f2ffffef@142596010978fcef6090dad9deb8c46686af1169eb03e0f3bf292e274c76d91b4"18446744073709551719  -04000000350a7716aea66329bdb90958591de7c819104efadcfb4928e3823799a5906c5b7086e49c6cff02bc1bfeb0431cf5a1c2172caa5cc06ba30f2c67084ac40cc4e60b6b8653ffff7f20f2ffffef@28ab37ff880284fa5932d82f6aa5ccb0602762f658846a1887d2ef29e099a94d5"18446744073709551721 +040000001bd9764c272e29bff3e003eb6911af8666c4b8ded9da9060effc7809019625140471e58abd2319cae1db95950298cd6aedd3ac1306f3f78ef1e0190ce03e4869ce688653ffff7f20f2ffffef@09155e46462e4ccd56599bc4a050f2e0fcf502eb2e19a23c6dea28613f2c05d45"18446744073709551721  -040000004da999e029efd287186a8458f6622760b0cca56a2fd83259fa840288ff37ab288e5875dcc6bf124570e40c3058e64d6833e7af94cde36e560e112be9e7aa2c43b26d8653ffff7f20feffff2f@0fee2aea61e260649c54aff2081099a4441f85d64eed4733064e5e671a9b34566"18446744073709551723 +04000000d4052c3f6128ea6d3ca2192eeb02f5fce0f250a0c49b5956cd4c2e46465e1509412cfb8fb8207c616189f7ef66cda0cdb8377a591b91ca022188e3027c15091dd16a8653ffff7f20f3ffffef@2961426251dd4584a6b45c0d69f64f0db5d485b8e7feb66275af5d31353f26226"18446744073709551723  -0400000056349b1a675e4e063347ed4ed6851f44a4991008f2af549c6460e261ea2aee0f1168789c04b6ebf9051b0c1180b9bacdc9a4df49d8aceb37e91d0852d4aebe71d16f8653ffff7f20f2ffffef@278118fe6760a9d7e56d5a7f388645baa9deacad2acc8aa0e434c298aa3326467"18446744073709551725 +0400000022263f35315daf7562b6fee7b885d4b50d4ff6690d5cb4a68445dd5162426129603fbc6a31caf970f11824b1fbbaf10b6dcc1492f7e4f6963d3a6aa6a0e87644166c8653ffff7f20f4ffffef@0af02619771187242484461c16a5f33f2edd478f1c361237adee6e26cfc326617"18446744073709551725  -04000000462633aa98c234e4a08acc2aadacdea9ba4586387f5a6de5d7a96067fe188127c1f53307679d22e8270e3b63db7316b1a6e937c3754648078ae973561e865ff0b5718653ffff7f20fbffff6f@2b6259eb6a081c886d78bc330381c3a3b3935e0f4350987f0cc6ab3c3117feb08"18446744073709551727 +040000006126c3cf266eeead3712361c8f47dd2e3ff3a5161c468424248711771926f00a69d4a092744bb5995556b4992a6914bece32ca9a0760b801b125283f407740a1d66d8653ffff7f20f2ffffef@6448c7adc853f2172b0b902b838ebc47c5a94d7d740d2a51192d17ca57b53ef28"18446744073709551727  -04000000b0fe17313cabc60c7f9850430f5e93b3a3c3810333bc786d881c086aeb59622b78e0d65bae854dd07058e4881d5b2c48decc48659ae7b6ff17efb12b52a4973938738653ffff7f2004000000@497c8a227443eb4b4061ffb9407f4c20fc08f7abe9b75e61809e90c2fb3c23019"18446744073709551729 +04000000f23eb557ca172d19512a0d747d4da9c547bc8e832b900b2b17f253c8adc74864756ce7bb88ca615e94d73d09c1298e28ea01601a188ee37cc3c4778cd8ed0ef9386f8653ffff7f20f3ffffef@6f814527348222ef7f439512a23eb8bc1de70a9d9536c47176aa89df1fb320e39"18446744073709551729  -0400000001233cfbc2909e80615eb7e9abf708fc204c7f40b9ff61404beb4374228a7c49827ccf16e3016b5af3cb7a519a899ff860054bf6368aea32d00d90594fa41578a3758653ffff7f20fdffff3f@5b77da42d9a576e8c8610053e2cf41de02e34b31e7333bcd6c29346f6226f9e5:"18446744073709551731 +04000000e320b31fdf89aa7671c436959d0ae71dbcb83ea21295437fef2282342745816fe3dbd3419bcfe609ffcfd89b9030bfaa25d61da0582b9597cfe70ec0a52a281864708653ffff7f20f3ffffef@035d0885fab1ebd72bb9649a93e6b45728643b162f5c5a51803f4510ab75034a:"18446744073709551731  -04000000e5f926626f34296ccd3b33e7314be302de41cfe2530061c8e876a5d942da775bb870fb2b7924cde633ee1dcee4564ea6a3c0ffd42b38d74f6d63e9c9069b6b9046778653ffff7f2002000000@5f27a91bdae788f9e9a2690dd3ac8432245031a66fa881f49041469674f2c939;"18446744073709551733 +040000004a0375ab10453f80515a5c2f163b642857b4e6939a64b92bd7ebb1fa85085d03b5316daeb4962feb3948bfc97fc7f4e3c7c0ec3e655e015de76d621c96fe0fbbea728653ffff7f20f2ffffef@5a39798bf96347f77bf290211679babe968954ec4868af6db4c8ad11911af75d;"18446744073709551733  -0400000039c9f27496464190f481a86fa63150243284acd30d69a2e9f988e7da1ba9275f50ed5c773bd460d725aa5cc3bcbc3196471de7745c5439ae5759afbbde2b47c5047a8653ffff7f2001000010@7b5609a852860914a77bfcd757eda3ce75556fa3469b774d8f68ea2aad695f1f<"18446744073709551735 +040000005df71a9111adc8b46daf6848ec548996beba79162190f27bf74763f98b79395ab8001a41dc1f2b33ca6eebd5bbd65af8cb90bbbeea83e9e9b28640e61527959619758653ffff7f20f3ffffef@3a42219ebd22ebf46aebbf0881ca17c3cfe5037b7a342ae574ba4f949af6e293<"18446744073709551735  -040000001f5f69ad2aea688f4d779b46a36f5575cea3ed57d7fc7ba714098652a809567b3c49c16d9bda2f5f8f2389a4a4a5593c40a5005a1298bed333bf88ce4fbdec55787c8653ffff7f20ffffff1f@13d213d4d0a2e13504e1a589727ca9070ab0876b7a686e0ec893cb480507222b="18446744073709551737 +0400000093e2f69a944fba74e52a347a7b03e5cfc317ca8108bfeb6af4eb22bd9e21423aac5799ba2ab864a0642df058a38310aa447177c830fe0518d7de2ebac3ff30fb71778653ffff7f20f2ffffef@23df19e1b99a1aaaf731ba0dc067092e297beff8f0422bb6622d8c43ef218d1d="18446744073709551737  -040000002b22070548cb93c80e6e687a6b87b00a07a97c7289a5e10435e1a2d0d413d21388efb780d6152fd40b63a0b0e999013991dfab4c75cfdd1d64d3c30757b4dc2b857e8653ffff7f20fdffff3f@25a16f820d5dd1e379bb9f30e60728e8020464a21adeafd1e5472ec830f59a8a>"18446744073709551739 +040000001d8d21ef438c2d62b62b42f0f8ef7b292e0967c00dba31f7aa1a9ab9e119df231f5a8b265d70c9a371ba33f48fabd86059c442c99cc55f05a3a46a4e2854957081788653ffff7f20f6ffffef@3aa5af095aa1eab915be53ef3339c73d4822f6716750d5c68f34dcc1f3f82fea>"18446744073709551739  -040000008a9af530c82e47e5d1afde1aa2640402e82807e6309fbb79e3d15d0d826fa125310fc157b5f173c8dbbccc2cea2cdd0ea56648e91f63b30b211e74196c4d7a965c808653ffff7f2005000000@36f0b93a69db5885a329943da924dc518ebd5aa707f5871dfeca13e149195d35?"18446744073709551741 +04000000ea2ff8f3c1dc348fc6d5506771f622483dc73933ef53be15b9eaa15a09afa53a7b82d9ee8bcfa4981ac4cc11b9862fd0384d2ab1e4d71e15d1c3e505de8674563b7b8653ffff7f20f3ffffef@35c6a28641e05109a8c0509b4378145c5ec3b8df8798a6b50a430130288e21ed?"18446744073709551741  -04000000355d1949e113cafe1d87f507a75abd8e51dc24a93d9429a38558db693ab9f03686487d2f66709332543b98e33c2b17f9021c4785d0aba72430c670d198c2730a30828653ffff7f20f3ffffef@4133e8dca9b7d63c3a3a7b7c54d9660ebe3d7866b29bd9f526f44fcf04b25a4f@"18446744073709551743 +04000000ed218e283001430ab5a69887dfb8c35e5c1478439b50c0a80951e04186a2c6350855d68214b840b61599d5bff41b3b12b8ad99214127ca2a6449ee94d034635fdd7d8653ffff7f20f2ffffef@1f6f0959e3f79b959b5fab710e4055c9420249b66685cfa006763f4769d7b93f@"18446744073709551743  -040000004f5ab204cf4ff426f5d99bb266783dbe0e66d9547c7b3a3a3cd6b7a9dce833416818b39a8c8409ecd45cd34e7d7dfae46cabf311e481b0c1f15dcf491b7ecf9cf3848653ffff7f20fcffff4f@3ba0be7eac64c9bc4b7717c36002ff0c582a3c6261b6916d3d2578e5a449c9caA"18446744073709551745 +040000003fb9d769473f7606a0cf8566b6490242c955400e71ab5f9b959bf7e359096f1fdd8046e4868372fe8e52f7fe6fa9ec7ec8b8c3f12b12144e3cf041ee34b027f1037f8653ffff7f20f3ffffef@5596899732b5eab84f6764e0b8fe594b644339f81ddaccfc7a7d707c43843472A"18446744073709551745  -04000000cac949a4e578253d6d91b661623c2a580cff0260c317774bbcc964ac7ebea03bcc2be4083d6c859fed332a1ee5b7528c588ffc9fb5fd1d6299e1924c31687b8fff868653ffff7f20fdffff3f@34f660202bd5b75f90812db50ce2a35fe90eaa97934ea96be091195b0b8eb6a7B"18446744073709551747 +04000000723484437c707d7afcccda1df83943644b59feb8e064674fb8eab53297899655cdd991769b96c79ab3ede7b1f0afdb7135d2d5b015c9f8f6288cbe41879c731a49808653ffff7f20f4ffffef@5340917246436385dcc9afa2fabd7b5b91e1757970dc1ef7ad0648b895a75aa7B"18446744073709551747  -04000000a7b68e0b5b1991e06ba94e9397aa0ee95fa3e20cb52d81905fb7d52b2060f634143b933ef7b6c5c7fd46f494a4db18d257cd414a384ac21c3895fec27cae1be58c898653ffff7f20f2ffffef@04f4ac9c4274594ad881a72c2def649736adcd6982c54fe5d0804826887594a3C"18446744073709551749 +04000000a75aa795b84806adf71edc707975e1915b7bbdfaa2afc9dc85634346729140530497ebf8da9f3143ed328a47313632fa82b0aee0c767696e25f78d22962e7e42f8818653ffff7f20f2ffffef@4d639c7abdbcdb7fe4ede5149b6bec300976d6d5ae07182bb77a486e2d6d2b78C"18446744073709551749  -04000000a3947588264880d0e54fc58269cdad369764ef2d2ca781d84a5974429cacf404ab6f0c75c9fdcbfef5ff50ea0ed78a26a5dab3f71bb3f1e68cfdd552c3750dd5918a8653ffff7f20fdffff3f@07678db3e3a35840016c6d78872a96da249935a41a242f2892b6b06929f4a0edD"18446744073709551751 +04000000782b6d2d6e487ab72b1807aed5d6760930ec6b9b14e5ede47fdbbcbd7a9c634dab95647f3e691895008a05e71d297f8bd5a5d7251bc4c727bcb9b715af7aff7a60838653ffff7f20f2ffffef@5eeda3b2fd1caf6257593e8ada43d9a6cd13f91f5eec42ebdd30088f3393f182D"18446744073709551751  -04000000eda0f42969b0b692282f241aa4359924da962a87786d6c014058a3e3b38d67073f3040b2d84f115c6dbcb50b63b37469fe023456438384d7fc14d9152558bc71158c8653ffff7f20f2ffffef@71cf7509d3ab657e2115240f40108e1151fcf7a2ceffb3754bd1e8b4ef90b5c9E"18446744073709551753 +0400000082f193338f0830ddeb42ec5e1ff913cda6d943da8a3e595762af1cfdb2a3ed5efc0e269b3d331d397eb8f5a459467c4ac225c87f16def534f600fc9c6b2985ad34858653ffff7f20f2ffffef@1339ce289ec433efaa99ea190c3c3383dd9a2ba473ac82a9139b448f4ca72dd9E"18446744073709551753  -04000000c9b590efb4e8d14b75b3ffcea2f7fc51118e10400f2415217e65abd30975cf7186d64a4e93f899e490c2e3cdaccd1a8b458a46484b7246f3bb8ef44c8f8a5cee418e8653ffff7f20ffffff1f@1a37bf455081c5d6a25c1ed9541217a061d5687f673cbac9033f7f68f3dfc7eaF"18446744073709551755 +04000000d92da74c8f449b13a982ac73a42b9add83333c0c19ea99aaef33c49e28ce3913a09e85b26229c4840752c156c93d33efcfe4bc9b41d6e615d62a79c40b105bc925868653ffff7f20f3ffffef@45fe6ee5235c73e2c56a903e036e16b7d2ed7b77441b036303e6774d3a943dd6F"18446744073709551755  -04000000eac7dff3687f3f03c9ba3c677f68d561a0171254d91e5ca2d6c5815045bf371aaeab9bd7f435ee61d7becfcc18d3a53a9bf1a3515a919a8d396ec4a0b7bd16defd908653ffff7f2002000010@4ee58157857a84ee7e7353536723a41cf7528d0fcf8241ee9d6ea3638359f5d5G"18446744073709551757 +04000000d63d943a4d77e60363031b44777bedd2b7166e033e906ac5e2735c23e56efe4542e4fbce401a8e02119e9e4eb2f22fa1862609e82abe5e4d02d56621da941f1e47878653ffff7f20f3ffffef@723dc5da05ec79b69dda6f58e169877c656eee07deb53229ea35c67a1d0f9523G"18446744073709551757  -04000000d5f5598363a36e9dee4182cf0f8d52f71ca423675353737eee847a855781e54e25096d98f3d3618331f27b4475f5ed9ba0ff1b9bebb082704b17b5c698d0e68a00938653ffff7f2001000000@3221dc4a2a862e88265478ca1ad07dd0c6dfdacd4a28fecf877bb3972fa064a4H"18446744073709551759 +0400000023950f1d7ac635ea2932b5de07ee6e657c8769e1586fda9db679ec05dac53d727869db15b5a76f7e9afdaa51b6d505f7f41eeb602e6076d2eeb35702a13b153ecb888653ffff7f20f3ffffef@2d10b1657bbe1fe8a41928b5b5b06488cb1dc7ca21e354758255b757b1ab0307H"18446744073709551759  -04000000a464a02f97b37b87cffe284acddadfc6d07dd01aca785426882e862a4adc2132358d9df8b540a12d903f8cf569f0a0dfd08430829ac7986b4ed3b6a5b7a2b3d175958653ffff7f20fcffff4f@6fff55bcf80bc9e85bc67821ab2acfd66d91e1020b1e4fed02459947c5ba2130I"18446744073709551761 +040000000703abb157b755827554e321cac71dcb8864b0b5b52819a4e81fbe7b65b1102d68f9aa6d831eee1bcd1aeea8228e67fc4e2381cd03cfe5c566a64b7e5c09fd80228a8653ffff7f20f3ffffef@7941eb3ed4f1ba30e35e79daee55b7c01ce02ea435773abfe62c7bb636e0133cI"18446744073709551761  -040000003021bac547994502ed4f1e0b02e1916dd6cf2aab2178c65be8c90bf8bc55ff6f0ce6ca4380b114a640fb05841f53e4baba14fd6194ceb6c89213f5eb56984e1ece978653ffff7f2000000010@40b468da78e99213064e6c5c4531e8fd3db4024f98662d448b239243fdbdbb51J"18446744073709551763 +040000003c13e036b67b2ce6bf3a7735a42ee01cc0b755eeda795ee330baf1d43eeb4179a75ecc72e96d94ae28d2a2fa0c7569cdaa288afe0c93f9cefdcf08258e35f017b98c8653ffff7f20f3ffffef@05bd65a1bd8754280c1fa334ab319f2286230c6b4acddbec71f750bb17bed16eJ"18446744073709551763  -0400000051bbbdfd4392238b442d66984f02b43dfde831455c6c4e061392e978da68b440805ab7a00a645eb9723786b460446f2958081ecf9504bee6f1411e6adc08e441f0998653ffff7f20feffff2f@6833ebc9a2f857377c595c9ac43d13ec4f4e1fb3ec96425365e85fdaab6c3f0cK"18446744073709551765 +040000006ed1be17bb50f771ecdbcd4a6b0c2386229f31ab34a31f0c285487bda165bd059e2e326fb29cf9e757a104502b1bd3762c662d197b4f1d80d5c289f3fe6e1c68908e8653ffff7f20f2ffffef@59d164242a5730d03c4f426254918987c4fc220f8bbb1de142f8b2ffb5b577a0K"18446744073709551765  -040000000c3f6cabda5fe865534296ecb31f4e4fec133dc49a5c597c3757f8a2c9eb33681881fb3bc0a974f69821eeef27db6146108bb6d13536e6eeac5f2ecd8dd1ee0ce19b8653ffff7f2004000030@29981a1afde5845ea46943b2f4860bbc25bb70ba96a33a6a2b4cc786ae0f2a5cL"18446744073709551767 +04000000a077b5b5ffb2f842e11dbb8b0f22fcc48789915462424f3cd030572a2464d159303e66fdee6f326d850178a98d254c3e81e5e1dbcbaac965c52eecdce844593a34908653ffff7f20f5ffffef@34ecf326e590ca68a67dd2dd00752d83d13c836dfa16529aeb023d1b814f6401L"18446744073709551767  -040000005c2a0fae86c74c2b6a3aa396ba70bb25bc0b86f4b24369a45e84e5fd1a1a98291edd4dd796a4d2b8e84e25a683e5657fa9f9dea021dffed367b4df77312a50d0d79d8653ffff7f20f2ffffef@53464b4917b35eaf3af5347e13c61f5715f431ebd6d28115f38de6f77d2f140bM"18446744073709551769 +0400000001644f811b3d02eb9a5216fa6d833cd1832d7500ddd27da668ca90e526f3ec34fe5a08885c1f99d7c52590101c43c0b7cd5415e7759509c7ece9c0dcbbfd22e99d928653ffff7f20f2ffffef@7dc5e51152dde1396c5d2f7cdb2aefa64e481f945a4d5af001170bc1d83f60caM"18446744073709551769  -040000000b142f7df7e68df31581d2d6eb31f415571fc6137e34f53aaf5eb317494b4653f9d98f5e5e5697739576e35a04e6dbaa42fc45fdc9426ce8baec0aabc6087c7d779f8653ffff7f20f2ffffef@158b948f74f91dd92758c6469a04e41954e2df8753e357f8cb306b136c09e03bN"18446744073709551771 +04000000ca603fd8c10b1701f05a4d5a941f484ea6ef2adb7c2f5d6c39e1dd5211e5c57d49728d9c810e164e89bf2d700d5a200ba3020f01edfc13f55e5a99fa407bbadb05958653ffff7f20f3ffffef@22d3d76e5dc9c154892b8ceb40c0550638a81a8ec8ff84c0b8b691c3d8b748cdN"18446744073709551771  -040000003be0096c136b30cbf857e35387dfe25419e4049a46c65827d91df9748f948b158627c2db544852d6984581abf0dba56439fa21159431efffb3aeb6763b5ca3a93fa18653ffff7f20f4ffffef@5f2641148ab707c2477e09414e03b6bc0bde044640c0ed64ca9fd36c0933f8dcO"18446744073709551773 +04000000cd48b7d8c391b6b8c084ffc88e1aa8380655c040eb8c2b8954c1c95d6ed7d32287f52e30328e5387f3a5f5bbf8dac6328a32694976ded4991349839c6b4605c0fe968653ffff7f20f3ffffef@17b42def0274bd7f83fae1429088cdd57f341e040ffe356f29bb057ed98db33fO"18446744073709551773  -04000000dcf833096cd39fca64edc0404604de0bbcb6034e41097e47c207b78a1441265f96d799299dd9d390e6e337d508c1ed5c511a61128a9a78882b11214489141ead46a28653ffff7f20feffff2f@373bc542a4b82b40521a2a7e70ded721d672b53b6bfc5324055a3086ff25655aP"18446744073709551775 +040000003fb38dd97e05bb296f35fe0f041e347fd5cd889042e1fa837fbd7402ef2db417848b8f8e4d07111610c08e7f8937e05006f2bf05ba1ad39eb84b07a4ba13c345a0988653ffff7f20f3ffffef@7cbe1fe72833b75a7ae63414a283cdfe977944d62e779e9531ce49d9d8129608P"18446744073709551775  -040000005a6525ff86305a052453fc6b3bb572d621d7de707e2a1a52402bb8a442c53b37634710077e3899cd80460dbc54d17bacedaa7e61af2cf2e48b52772ad1b6cb1e44a48653ffff7f20ffffff1f@6e22a67ffbd39268b2a64b266f1b57e6d7f2fab8e64069512eb4fab63323b9e4Q"18446744073709551777 +04000000089612d8d949ce31959e772ed6447997fecd83a21434e67a5ab73328e71fbe7cd9ef2c3ab5a924391c76188c81e075c94fcb10a4bbe88b9ee6ed25faad7f2ebb0b9a8653ffff7f20f6ffffef@6d90807831c1e9d8c1f832701012432a5044b836b209d84cf2ba8b5a6b56cd3aQ"18446744073709551777  -04000000e4b92333b6fab42e516940e6b8faf2d7e6571b6f264ba6b26892d3fb7fa6226e7dd8629a44427db96a0a2ed56f3aa42e91bf5c6f138c10d15bda9b0e0124dbf274a68653ffff7f2002000000@01f7b8b15883a043491fc9c288a8b0a5b209ebe967fb839bacd27fda17823742R"18446744073709551779 +040000003acd566b5a8bbaf24cd809b236b844502a4312107032f8c1d8e9c1317880906de3bc57da2255f9689576f877ee3d43974a7b8601a4ec5a39b195c5e4d0a17ca1619b8653ffff7f20f2ffffef@52d2f6dffc588e0f807bf08ea75c78a1298fc7564b1c516bfde2de091df1a9adR"18446744073709551779  -0400000042378217da7fd2ac9b83fb67e9eb09b2a5b0a888c2c91f4943a08358b1b8f70180a1160cfa4a3d5c15895f6f16b6dc37aed728e7fe3d7e48b56e9cf1d71d7b1b26a98653ffff7f20fdffff3f@0528706ff38951336712d03986bc2779cb1c2c68df4263cb9f948aaf6a448d95S"18446744073709551781 +04000000ada9f11d09dee2fd6b511c4b56c78f29a1785ca78ef07b800f8e58fcdff6d25252a092d595a371c13b96d280acb86cc0d472a440b191b6e2eb1e02a91ab2d155cb9d8653ffff7f20f2ffffef@27cdf4a888db3958adf54464253f1567fa52cda2039824e6e401ad87161b3bffS"18446744073709551781  -04000000958d446aaf8a949fcb6342df682c1ccb7927bc8639d01267335189f36f702805ae02eff92e5c1a928c5b138ffb7ad40865900f8b30f7108d56bfeaaa63571ef6e2aa8653ffff7f20f2ffffef@29654edf6e89b1d2bb85187345db88bb35a526e9b60997192d5efb7606cc7340T"18446744073709551783 +04000000ff3b1b1687ad01e4e6249803a2cd52fa67153f256444f5ad5839db88a8f4cd27105d03051851a46130dbeed86c5dfeb983054f0538e94d5c62bc926a6d1f2289259f8653ffff7f20f2ffffef@631f12b5cdf703e8987eb5f3d06dda9e83f32bc5b5b42396063d6d8a9b1b96feT"18446744073709551783  -040000004073cc0676fb5e2d199709b6e926a535bb88db45731885bbd2b1896edf4e65292dde3e7fbbe84016fb6646e0b359fc2a506a40725ab42d3f188ca6f33a019bc25aad8653ffff7f20f3ffffef@3e4f6c753a0e31df52f1ebf50a19dd6d44289e02d6919deecc41c2a2ee6e2582U"18446744073709551785 +04000000fe961b9b8a6d3d069623b4b5c52bf3839eda6dd0f3b57e98e803f7cdb5121f638bc7fa39013be1ad67256b8fd2e85f59e4df5f6ed234edd0689d19223d5ba4e885a08653ffff7f20f2ffffef@39f693fea1045bdaf62b0a388a53ed8bb993efc5dbd13f745d04001174cb3b5dU"18446744073709551785  -0400000082256eeea2c241ccee9d91d6029e28446ddd190af5ebf152df310e3a756c4f3e04badcc19668876a8f6d340fd3a3a5175287698bf165eac0eb2cf3c0ed9af0a487af8653ffff7f20ffffff3f@3607fe9ec46c1946f591eda86d0b40806fc143ca72fd5c6fb722d9e37cc1c310V"18446744073709551787 +040000005d3bcb741100045d743fd1dbc5ef93b98bed538a380a2bf6da5b04a1fe93f639ff2f2a96a04ee0d2aad172df3845e4dab5a35fc3f9feb93f2d4a04402bebef302ba28653ffff7f20f3ffffef@330cc2d454657cc098f3fc7ce0662acf7f6325064c0338040a0fb1c6d2e0e327V"18446744073709551787  -0400000010c3c17ce3d922b76f5cfd72ca43c16f80400b6da8ed91f546196cc49efe0736842cb236de8baa22f60d9150c300ba3d632de7ac9e4974199bda1c7b070af78871b18653ffff7f2004000000@2f0fede0c20eee0d829b4e287291d2ce44cc1f726c127cc68a3d2b802b297616W"18446744073709551789 +0400000027e3e0d2c6b10f0a0438034c0625637fcf2a66e07cfcf398c07c6554d4c20c336aa374c4b2649a6ee06fffd97f34dd86d98f5c271c54a5eb3d87fd85937f76ab99a48653ffff7f20f4ffffef@62bb5f4cb5d1bed9669bd23b4a9070f1e8eee440c4289b5a791c144c550a9e03W"18446744073709551789  -040000001676292b802b3d8ac67c126c721fcc44ced29172284e9b820dee0ec2e0ed0f2f29d327df08c873e215113f3a172d6d13467addc469f0b083bbd897146007df648eb38653ffff7f20ffffff1f@11c9c64e5b39c8bd102f4f91c36ef3153e1cc0689c1440a152dc41421e82fa9fX"18446744073709551791 +04000000039e0a554c141c795a9b28c440e4eee8f170904a3bd29b66d9bed1b54c5fbb6228d1f05c8c706c61c8794340b4b819b98395a9a6914820152ddb42b283c2101925a68653ffff7f20f2ffffef@3c103da22442cb773b17159bdc33f5cf6634da5e44094446c38d56acba6525ffX"18446744073709551791  -040000009ffa821e4241dc52a140149c68c01c3e15f36ec3914f2f10bdc8395b4ec6c9111765bc49f39afcf5deeeaf8f26b1d6d2380c8d99ebba1272e2d948f7fec64e3e42b58653ffff7f20fcffff4f@6bcb8d583e83b5f3c43c1ddde51aac581c47c722db3ac620aae8bffa510f6c94Y"18446744073709551793 +04000000ff2565baac568dc3464409445eda3466cff533dc9b15173b77cb4224a23d103c07600be1825ac9886e2aee890a31a2392a04cab6c016ceb9dc61150c8fb875162ca88653ffff7f20f2ffffef@11483a4cdc41d5bd3a90ecda1555eff03038958687f6608c0c13115a04dfe72fY"18446744073709551793  -04000000946c0f51fabfe8aa20c63adb22c7471c58ac1ae5dd1d3cc4f3b5833e588dcb6bc992814a7cef0d4b000fab73910769249ea517cb48f7e7e79d9d2fdaff125d24a8b78653ffff7f20f3ffffef@16576a1fc5a7e58dff223fc8c9b7c2611c6157d2f9444df53db799e295877dffZ"18446744073709551795 +040000002fe7df045a11130c8c60f68786953830f0ef5515daec903abdd541dc4c3a4811eb6f19462399bbd702e7daad9e89625913faffe1f67abfea47115b5fd6a559e452aa8653ffff7f20f2ffffef@20789617221a2fe9f314c37c8da76013a201d261a462f3b18f7992a9b9027453Z"18446744073709551795  -04000000ff7d8795e299b73df54d44f9d257611c61c2b7c9c83f22ff8de5a7c51f6a5716941c1cd54b03799eb636ea5a0068e0ff4e73cb6411ff53fae837659fca83ba27f9b98653ffff7f20f2ffffef@7876c6e48cc61455c347d1fc1e635451643864eeee144b1af5855e0251f41481["18446744073709551797 +04000000537402b9a992798fb1f362a461d201a21360a78d7cc314f3e92f1a2217967820363e29dc4392f7b31f3762b6bb78f09ed8b817d6d0f675e3d8ebc0b110eb595e0eac8653ffff7f20f4ffffef@4a8b42ba468553c0f790c361edad8c7a5cbc5ae0fa9d37f884f6423d8d11b33a["18446744073709551797  -040000008114f451025e85f51a4b14eeee6438645154631efcd147c35514c68ce4c676780f32128702a742b45a2818f074cf9301512a5fa614ccc2fd9f05d2cebee9c87352bb8653ffff7f20fdffff3f@056c0940dcc73601d1d66d83f43707bebe1dab06f76ce8828ae95fed465caf28\"18446744073709551799 +040000003ab3118d3d42f684f8379dfae05abc5c7a8caded61c390f7c0538546ba428b4ad2d89a53afc88182ecff42adcd3ddbb5e642aab1f597e49ab5a85d8fdaf1eee07dad8653ffff7f20f3ffffef@6741b42973c2b10e8a242ff9539f092adbc6aa22946b01ea1848690b25bcb871\"18446744073709551799  -0400000028af5c46ed5fe98a82e86cf706ab1dbebe0737f4836dd6d10136c7dc40096c05449701f9ddb4a04ed22f4701919dc958c17eaf9df351edb3a857f48692f97bb3efbd8653ffff7f2001000000@6d4bce5a2382fc13932b181d1c53de90384e0e4485b741147ca061efa67434e3]"18446744073709551801 +0400000071b8bc250b694818ea016b9422aac6db2a099f53f92f248a0eb1c27329b44167b7caebf33dd194557d0114fd14d0c3272df9846d3bcab42b5c2dc5724c372df198af8653ffff7f20f2ffffef@4c0bec76cb969d0f6f8cbf473e8e2b36d4e12ac9e684c4e7e39843c56bfd0517]"18446744073709551801  -04000000e33474a6ef61a07c1441b785440e4e3890de531c1d182b9313fc82235ace4b6d504d1c9c66b37ad4618b0dc4a00cd3b80b26da5f8ab871fb5ddc4b79dc53e8a78fbf8653ffff7f2001000000@24759e254bb77826483076d033124ad73d9b14bf14cf967d2630dd64aa498e96^"18446744073709551803 +040000001705fd6bc54398e3e7c484e6c92ae1d4362b8e3e47bf8c6f0f9d96cb76ec0b4cc7479bae903d382f8cc244ac474b5cc92739c3739c835000d10c48ac46d9efd866b28653ffff7f20f2ffffef@27159c12df90158d4b2e75e564b87b4725f2976163523a43ab821781ab6fd3b7^"18446744073709551803  -04000000968e49aa64dd30267d96cf14bf149b3dd74a1233d07630482678b74b259e7524fa6a07c2ebeaf97929a554c750a84f2c6e509537b8755f7ce2aaf014a38f09389cc18653ffff7f20f2ffffef@5fa821fc183b2b4fbf8e744ec936f6a11a5444fbaa44f004a5a451da477b9fe7_"18446744073709551805 +04000000b7d36fab811782ab433a52636197f225477bb864e5752e4b8d1590df129c1527fd0fda232cc581a844f615eb300e351b3c32429a86878cf500050daf20aa38f8f2b48653ffff7f20f2ffffef@4cf86e28d319cc8c47904a8f1baceb00fe3f2409a8d1d3e7576ffa97ad296132_"18446744073709551805  -04000000e79f7b47da51a4a504f044aafb44541aa1f636c94e748ebf4f2b3b18fc21a85f5fd3d6c52dc229acaf2dcb5759b3817cb00984f3e6759009d819e8c202fd73c363c38653ffff7f20ffffff1f@3eef70715fa2ba7948376c64a87afc626acc719ab901b1b78fe5377bf07cb983`"18446744073709551807 +04000000326129ad97fa6f57e7d3d1a809243ffe00ebac1b8f4a90478ccc19d3286ef84ce9d95d53bc5cf472901e6ca4c6abcad24802673a77c2b37bf6436c63ad3e355e4db68653ffff7f20f3ffffef@2ea82a01339384f456d64ebdfba085f2deb91a5ba677448c5ab70755c3c65f90`"18446744073709551807  -0400000083b97cf07b37e58fb7b101b99a71cc6a62fc7aa8646c374879baa25f7170ef3e6dd6eec26f4f206e96193b099db6d9f457f11e3a54eba2eb3ba4564139c6ef15ebc48653ffff7f20f2ffffef@64c1e2ad2beac3363d94f146cb22b781259fef97e7e3b06955e316efaef8fef5a"18446744073709551809 +04000000905fc6c35507b75a8c4477a65b1ab9def285a0fbbd4ed656f4849333012aa82ee8393f55563ff363bb542f6b1508fec2d3655575df0e0b4671719f388c8071ac19b98653ffff7f20f2ffffef@4666abe4d0b3c2c493bd6753bbe1b62b809f3a95b6cfd88be572a3996b2eac3aa"18446744073709551809  -04000000f5fef8aeef16e35569b0e3e797ef9f2581b722cb46f1943d36c3ea2bade2c16447b66541c3ab38a4cd1b321d581bf00ebb8796b2f75ec158db02d399e978ab80d1c68653ffff7f2003000000@03320b5ea88a3ba08b1b6a82a116c4478de7c6b1f51762fc2895b7fa7a95f5d6b"18446744073709551811 +040000003aac2e6b99a372e58bd8cfb6953a9f802bb6e1bb5367bd93c4c2b3d0e4ab6646ffc7adf164b5b0d1eea34785eb400b5de315510a2814f90c67a72cb3a944c926f1ba8653ffff7f20f4ffffef@5ed7acbe8fc9681dbdff77236a1a237c14e3d8c8ce01b7c1383cf445e4b7cd98b"18446744073709551811  -04000000d6f5957afab79528fc6217f5b1c6e78d47c416a1826a1b8ba03b8aa85e0b320392e0ab9ea8c13887f80940f846bb6317303db2e6393e648c1b007d9e2a7d1d85f2c78653ffff7f20f7ffffef@7a0974e4c307d53d8adeaa6bdee0e93ad450630d5c4a10afb8391b414a6f8d7fc"18446744073709551813 +0400000098cdb7e445f43c38c1b701cec8d8e3147c231a6a2377ffbd1d68c98fbeacd75e53218b79b8bfec551ec15827bbe35b34bfc11f2241824c67de1354945778733845bc8653ffff7f20f4ffffef@3649ed8925cb166b629d90be00429c54c57f595b39f1cbb0047254dde30c832fc"18446744073709551813  -040000007f8d6f4a411b39b8af104a5c0d6350d43ae9e0de6baade8a3dd507c3e474097a960a4b05e73c40273cf242fd8449adbfbf94555995344f1a4467cba8525e3b2ba9c98653ffff7f20f3ffffef@46d0aa1ee364365cbded4e5ca2cbc642909c521104fdbb31a7e84431c5799665d"18446744073709551815 \ No newline at end of file +040000002f830ce3dd547204b0cbf1395b597fc5549c4200be909d626b16cb2589ed49369a5fe3fce7f45fffd5f8ad40108b2a76312ac168d10686d643fd56e37e72446910bf8653ffff7f20f2ffffef@4575f28d2c5ca5272162ad27d691925fdb441d7a205946cb27549fb750e3c931d"18446744073709551815 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork.dat b/packages/test-utils/testdata/btc_light_client_fork.dat index 094bfe41..44c5802d 100644 --- a/packages/test-utils/testdata/btc_light_client_fork.dat +++ b/packages/test-utils/testdata/btc_light_client_fork.dat @@ -1,23 +1,23 @@  -04000000ff7d8795e299b73df54d44f9d257611c61c2b7c9c83f22ff8de5a7c51f6a57164312d5c92c1ab1da689538b6d8b8d1d92a9cbb07c5ed15daa166fe2d8d27677a34ba8653ffff7f20f2ffffef@3c247dfed7be86ecc366252d3152dbfaaf9ebba102f2ee24bb0bdd7ac26d767e["18446744073709551797 +04000000537402b9a992798fb1f362a461d201a21360a78d7cc314f3e92f1a2217967820a1667889e817755d848c5c6b9947e4f48bae0b7b173d4935bfc5ea23543331e249ac8653ffff7f20f2ffffef@7a49ba70d6a9216b885d7298783b1de648fb3a8a3fb5def96115fd1471533516["18446744073709551797  -040000007e766dc27add0bbb24eef202a1bb9eaffadb52312d2566c3ec86bed7fe7d243cb61d02e31e33db91a0f5f85a6108bb2af87db761445e9149524b8726f76bd21988bb8653ffff7f20f2ffffef@16ffa3379a847f04ea07a81d501a377abe01b5d5e5b9dfa3ad1400d84130e5cd\"18446744073709551799 +040000001635537114fd1561f9deb53f8a3afb48e61d3b7898725d886b21a9d670ba497ad94ef66459d5c855d5c15e63042478f68d9329dd4c6945c101c2664534aa583488ad8653ffff7f20f2ffffef@1d67c9a3b637b0f552ba819135f0c602ffa3ed02981c9f2fb6521167a53d9323\"18446744073709551799  -04000000cde53041d80014ada3dfb9e5d5b501be7a371a501da807ea047f849a37a3ff16966e546f76c22d478a49b909cf0e7a09cc20a72b01f68339f611c75afeecf1e40bbd8653ffff7f20f2ffffef@0a9508a7554e2bc2e7d1bb21276dd6c09e21e629fb3db152f89a49cd22e56e03]"18446744073709551801 +0400000023933da5671152b62f9f1c9802eda3ff02c6f0359181ba52f5b037b6a3c9671db3e66352d83eed0b87c159a14f514cdb5590d54283e8fe89c31f452ce560143dfaae8653ffff7f20f3ffffef@669023fd4cf2648fff0209a549e1cbc2063de3f8d813396624fbc6dfdd560e22]"18446744073709551801  -04000000036ee522cd499af852b13dfb29e6219ec0d66d2721bbd1e7c22b4e55a708950afad0b545c6571bd6a6fccdd1881edeb11afc0bf5b85523aa8716be07e143012fdcbe8653ffff7f20f3ffffef@6571de73d421436147d9f414c77f3cdcd2b7f47e15c73d4689889179d4640143^"18446744073709551803 +04000000220e56dddfc6fb24663913d8f8e33d06c2cbe149a50902ff8f64f24cfd2390661877b4acdf0e65cc79a090d802f7c8806304903cc7ee55ab1644d6414c5ba62311b18653ffff7f20f4ffffef@2f3f0b387eacc294a6969c07ab38514bdb42d076f40a7083ca832bfd88a005bf^"18446744073709551803  -04000000430164d479918889463dc7157ef4b7d2dc3c7fc714f4d947614321d473de71650dc729ab179cc91272e61153a9d5426023ecc47da1c22f8c143e786e58e5e632e1c08653ffff7f20fbffffef@7c6ac066f53af9a49a8f29b621a6b26b192d42e77b9ac4872a1e5d820944a0aa_"18446744073709551805 +04000000bf05a088fd2b83ca83700af476d042db4b5138ab079c96a694c2ac7e380b3f2f5b848d2d5567b4ef78aa1506ece17cbaf948f365dfa85e9b6e1726c72b7824244cb38653ffff7f20f4ffffef@1e676104787f46a14bb22ccd6a076d06e5af4c450fe172ca8fde9c3cefb9ede9_"18446744073709551805  -04000000aaa04409825d1e2a87c49a7be7422d196bb2a621b6298f9aa4f93af566c06a7c1ccb0e8587789a3334229d1a162c169709b2bb36811e90d0abb7f1f6d8f4798ef4c28653ffff7f20f2ffffef@2350b01fc5e75b224eff07b7e472bc1071a768ef1d846b179f852d511059af49`"18446744073709551807 +04000000e9edb9ef3c9cde8fca72e10f454cafe5066d076acd2cb24ba1467f780461671e7bf13e12892b79ea5704a22f263a53c5731f8f8b0aa94bc99b36d4a8b1fac83f03b58653ffff7f20f2ffffef@31603f090b9530464eb9442860dea3f2d3200b94a343a96647807ff2c993b9fd`"18446744073709551807  -0400000049af5910512d859f176b841def68a77110bc72e4b707ff4e225be7c51fb05023a80e9714cc66dbf364d5e3b977a877a4d7087165e1b41ddcdab37e220dc5aa4cb7c48653ffff7f20fdffff4f@16d2d772bc35af191c60db5627ec9e7881218d0877b4eb0c3e264bf80490c694a"18446744073709551809 +04000000fdb993c9f27f804766a943a3940b20d3f2a3de602844b94e4630950b093f60311510b0080280f40631c1de2ee0f4c7b3a46ccba43b1a4b6ae28450d292d76699b0b68653ffff7f20f5ffffef@22e84821d94dcb99a5873c2c44ceed47dfb3d87a518ea7bf22f75cbcd5265506a"18446744073709551809  -0400000094c69004f84b263e0cebb477088d2181789eec2756db601c19af35bc72d7d216632aae94d7b8ed7ed72321f3765bf3c45888e83d707998c2489c118610796b285ec78653ffff7f2000000010@2d2bdeb2599cef5e416eabf8107d38c9503e48d2b66a1357793b5ca08fefa083b"18446744073709551811 +04000000065526d5bc5cf722bfa78e517ad8b3df47edce442c3c87a599cb4dd92148e8222fd4d5ad7604da3aee2ce92c8fecbed45b0082c2d92162573c249b8c19bf1793a6b78653ffff7f20f2ffffef@7e2e7873633821d63b64ad3200a7f83f24104d005ae85d40be37f498f45a85b0b"18446744073709551811  -0400000083a0ef8fa05c3b7957136ab6d2483e50c9387d10f8ab6e415eef9c59b2de2b2d2d8ccaa347fb9e1b129d4f62db6bcea29daf8d22d9ba2617ccca61e769920324e4c88653ffff7f20f2ffffef@74aaf0e05d873c213c0c9db4f6025ec0d219bdd2e19b37d6d71e65fd4db9aacac"18446744073709551813 +04000000b0855af498f437be405de85a004d10243ff8a70032ad643bd621386373782e7ea7e2e286777332008e752e919f9ed77069456a1c7da5fa33ab88e370cdcbf92d01b98653ffff7f20f3ffffef@2b94b93389bd1f80f30b023d3e3b3668e5095df63a47de4b9ff7bbef0d74fd23c"18446744073709551813  -04000000caaab94dfd651ed7d6379be1d2bd19d2c05e02f6b49d0c3c213c875de0f0aa74919279b5a12e6171f8327085f969bb261b0d9643d4289d17bc8b2e7f6fa156d814cb8653ffff7f20f5ffffef@3e2697768b6dedbd9252948fbddaf2b771dbb634da5353dea356ed80b24c7aa4d"18446744073709551815 +0400000023fd740defbbf79f4bde473af65d09e568363b3e3d020bf3801fbd8933b9942b63b2b3225efb4f23be7576b2f6b6d32ab2dbbec1cc2e9abecd5b2caf6bb990f044ba8653ffff7f20f2ffffef@61bcd4c34beed93a2420f9902d4442c7fbeaf7b7fb162e22f0e22b8ae71c63ead"18446744073709551815  -04000000a47a4cb280ed56a3de5353da34b6db71b7f2dabd8f945292bded6d8b7697263e17ead191c679479f1edce3368e10830cfb85b46b30f97aa6a054c09f554dd2411bcd8653ffff7f20feffff2f@795373b3cc9261831b7ddd3157957c918f06d611eca7b9a7b56fb0740d87cdbee"18446744073709551817 \ No newline at end of file +04000000ea631ce78a2be2f0222e16fbb7f7eafbc742442d90f920243ad9ee4bc3d4bc61cd1ab852dfb3fecf3c56b15f71c861de19159ec345fe81b26b72422169d5c806ebbc8653ffff7f20f2ffffef@7c15ae3eb9d4fc50e93da4bb3244368ec7c40de7e15b7f4f893eba43d2014b50e"18446744073709551817 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork_msg.json b/packages/test-utils/testdata/btc_light_client_fork_msg.json index 5f0d5f63..126b36d0 100644 --- a/packages/test-utils/testdata/btc_light_client_fork_msg.json +++ b/packages/test-utils/testdata/btc_light_client_fork_msg.json @@ -1 +1 @@ -{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"16576a1fc5a7e58dff223fc8c9b7c2611c6157d2f9444df53db799e295877dff","merkle_root":"7a67278d2dfe66a1da15edc507bb9c2ad9d1b8d8b6389568dab11a2cc9d51243","time":1401338420,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"3c247dfed7be86ecc366252d3152dbfaaf9ebba102f2ee24bb0bdd7ac26d767e","merkle_root":"19d26bf726874b5249915e4461b77df82abb08615af8f5a091db331ee3021db6","time":1401338760,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"16ffa3379a847f04ea07a81d501a377abe01b5d5e5b9dfa3ad1400d84130e5cd","merkle_root":"e4f1ecfe5ac711f63983f6012ba720cc097a0ecf09b9498a472dc2766f546e96","time":1401339147,"bits":545259519,"nonce":1342177279},{"version":4,"prev_blockhash":"3a94a3532a623e0434438a6eaea1a49436dc21ac7afc11f50c800a772d5f8d06","merkle_root":"2f0143e107be1687aa2355b8f50bfc1ab1de1e88d1cdfca6d61b57c645b5d0fa","time":1401339612,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"57fa6d320272e0177c7faeab647b1c06ab4a9bedc36600e2cd9272d0e8df227e","merkle_root":"32e6e5586e783e148c2fc2a17dc4ec236042d5a95311e67212c99c17ab29c70d","time":1401340129,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"4d4cec5c604b1cc7dde9a73a6a8ee90982d06e6c706bf40bd845ba5f3e109b7a","merkle_root":"8e79f4d8f6f1b7abd0901e8136bbb20997162c161a9d2234339a7887850ecb1c","time":1401340660,"bits":545259519,"nonce":2},{"version":4,"prev_blockhash":"5071a9a7840db09d7aa9b5cafc487df3bbef9533a1578d80ba5b9e45740d87be","merkle_root":"4caac50d227eb3dadc1db4e1657108d7a477a877b9e3d564f3db66cc14970ea8","time":1401341111,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"61f7b7621d6d83bd114c7bb336dde4d73c199602cd12e780762c55653e71a692","merkle_root":"286b791086119c48c29879703de88858c4f35b76f32123d77eedb8d794ae2a63","time":1401341790,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"0cd0f74421d6b086542a39b202b2f79468cf1083ca65a9c39a1708840871c0a0","merkle_root":"24039269e761cacc1726bad9228daf9da2ce6bdb624f9d121b9efb47a3ca8c2d","time":1401342180,"bits":545259519,"nonce":268435458},{"version":4,"prev_blockhash":"17fdb373c5a681cc081f9dde8afbbe09ba69922ffb17adc097ad19a5046391a3","merkle_root":"d856a16f7f2e8bbc179d28d443960d1b26bb69f9857032f871612ea1b5799291","time":1401342740,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"4284dedf56946827b6a78bb404e425123b555758f98098350955d5756f1c2760","merkle_root":"41d24d559fc054a0a67af9306bb485fb0c83108e36e3dc1e9f4779c691d1ea17","time":1401343259,"bits":545259519,"nonce":4026531826}]}} \ No newline at end of file +{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"20789617221a2fe9f314c37c8da76013a201d261a462f3b18f7992a9b9027453","merkle_root":"e231335423eac5bf35493d177b0bae8bf4e447996b5c8c845d7517e8897866a1","time":1401334857,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"7a49ba70d6a9216b885d7298783b1de648fb3a8a3fb5def96115fd1471533516","merkle_root":"3458aa344566c201c145694cdd29938df6782404635ec1d555c8d55964f64ed9","time":1401335176,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"1d67c9a3b637b0f552ba819135f0c602ffa3ed02981c9f2fb6521167a53d9323","merkle_root":"3d1460e52c451fc389fee88342d59055db4c514fa159c1870bed3ed85263e6b3","time":1401335546,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"669023fd4cf2648fff0209a549e1cbc2063de3f8d813396624fbc6dfdd560e22","merkle_root":"23a65b4c41d64416ab55eec73c90046380c8f702d890a079cc650edfacb47718","time":1401336081,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"2f3f0b387eacc294a6969c07ab38514bdb42d076f40a7083ca832bfd88a005bf","merkle_root":"2424782bc726176e9b5ea8df65f348f9ba7ce1ec0615aa78efb467552d8d845b","time":1401336652,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"1e676104787f46a14bb22ccd6a076d06e5af4c450fe172ca8fde9c3cefb9ede9","merkle_root":"3fc8fab1a8d4369bc94ba90a8b8f1f73c5533a262fa20457ea792b89123ef17b","time":1401337091,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"31603f090b9530464eb9442860dea3f2d3200b94a343a96647807ff2c993b9fd","merkle_root":"9966d792d25084e26a4b1a3ba4cb6ca4b3c7f4e02edec13106f4800208b01015","time":1401337520,"bits":545259519,"nonce":4026531829},{"version":4,"prev_blockhash":"22e84821d94dcb99a5873c2c44ceed47dfb3d87a518ea7bf22f75cbcd5265506","merkle_root":"9317bf198c9b243c576221d9c282005bd4beec8f2ce92cee3ada0476add5d42f","time":1401337766,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"7e2e7873633821d63b64ad3200a7f83f24104d005ae85d40be37f498f45a85b0","merkle_root":"2df9cbcd70e388ab33faa57d1c6a456970d79e9f912e758e0032737786e2e2a7","time":1401338113,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"2b94b93389bd1f80f30b023d3e3b3668e5095df63a47de4b9ff7bbef0d74fd23","merkle_root":"f090b96baf2c5bcdbe9a2eccc1bedbb22ad3b6f6b27675be234ffb5e22b3b263","time":1401338436,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"61bcd4c34beed93a2420f9902d4442c7fbeaf7b7fb162e22f0e22b8ae71c63ea","merkle_root":"06c8d5692142726bb281fe45c39e1519de61c8715fb1563ccffeb3df52b81acd","time":1401339115,"bits":545259519,"nonce":4026531826}]}} \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_timestamp.dat b/packages/test-utils/testdata/btc_timestamp.dat index 865d9d8971debaaff99e17f2c56b9cedf04be3ef..7702fc4ed1f76a6fb7d00eafd82750bd4c8d3330 100644 GIT binary patch literal 5867 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 literal 5902 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 diff --git a/packages/test-utils/testdata/btc_timestamp_header0.dat b/packages/test-utils/testdata/btc_timestamp_header0.dat index 1d356971..d3ac6835 100644 --- a/packages/test-utils/testdata/btc_timestamp_header0.dat +++ b/packages/test-utils/testdata/btc_timestamp_header0.dat @@ -1 +1,2 @@ -hn<<1P rsk1#5hI)5S1v-&~ 2˕Y~o5-M \ No newline at end of file +$ˁƬH9ggZDwf#[΢Tn-u[w!ŮFq}\. +o 6[ \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_timestamp_header1.dat b/packages/test-utils/testdata/btc_timestamp_header1.dat index db53d15a97c28e6522a016601b5965e940e798bd..1d8c70b79a03714873f38df2ce0494eeb5d185e0 100644 GIT binary patch literal 80 zcmV-W0I&ZzVxbL-kD=2G8hWYZKYkgUcpUnH0jdpSATQ?2iishB?V#e;@O$lX?=stf m$&?HF;|NlQ4{3tR2 literal 80 zcmV-W0I&b1`E@b%iJuED?-zAd;Wso})X~C@QG63E%AD^Qb~J}dQ>^PJ mii1?wtyXv4=MbzU>e^6YJ%A?8jX$C?Ug`q>|9>C>0001{*e7TJ diff --git a/packages/test-utils/testdata/btcstaking_params.dat b/packages/test-utils/testdata/btcstaking_params.dat index a986a13b..72bb6c08 100644 --- a/packages/test-utils/testdata/btcstaking_params.dat +++ b/packages/test-utils/testdata/btcstaking_params.dat @@ -1,7 +1,6 @@ - ߯726|}/ZWuPj - - `U]}]ˑ.!Ey!Q - On{(wnfL%x%;F5 - ;Q8zI|Wm~u(,R0 - |FdmKKf|xlY|.d"mvHu5MZwPujM5rUNDbCijugnzai488XiC3*020J0 \ No newline at end of file + aoDXKO 5#u/]5x-j; + -y?x-PF6{-Fi0Hy=+aIlceWzd!SW4((aYvtapFj`V=T|Fw$jG!B1@ ri2LufJRv*v_R%GopH^fYHjPT#zAoeI-u-L6xRUepic51-i*yYE0_9O? literal 0 HcmV?d00001 diff --git a/packages/test-utils/testdata/finality_provider_2.dat b/packages/test-utils/testdata/finality_provider_2.dat new file mode 100644 index 00000000..5f8f480c --- /dev/null +++ b/packages/test-utils/testdata/finality_provider_2.dat @@ -0,0 +1,4 @@ + +*bbn193axrcgeddw92nlkw00yr7np4jrdmqlcmux50q +e88342d590c1870bed3e380000000000000000" Σ%e&>A1NFYUot#2*B@|q=FoWC S#Żı'n@Uʺ#0Z{7+=EJ +consumer-2 \ No newline at end of file diff --git a/packages/test-utils/testdata/finality_provider_3.dat b/packages/test-utils/testdata/finality_provider_3.dat new file mode 100644 index 0000000000000000000000000000000000000000..3a8e0efb6469caa59ca4042595ee49fc3e5ee91d GIT binary patch literal 202 zcmdZ#&Z!g<;}S_S zOfgC`F*YzuGfYafG_|luwlJ0wGPX2814;^ynOMGmS{_-;oXpw$;G(;i!DUUJPf5IL z*C+0kG^m(yUCT+x;pnFRU2XsD1r;m| literal 102 zcmdiX-1LB>Rx;1)$&1?{^$Y#9v3Nm From 969cd96f6e9ca2c4569bd177e4919432d66c22d9 Mon Sep 17 00:00:00 2001 From: Runchao Han Date: Mon, 2 Sep 2024 14:56:32 +1000 Subject: [PATCH 5/8] one last test case --- contracts/btc-staking/src/contract.rs | 29 +-- contracts/btc-staking/src/finality.rs | 6 +- contracts/btc-staking/src/queries.rs | 74 +++---- datagen/go.mod | 2 - datagen/go.sum | 65 ++---- datagen/utils/btccheckpoint.go | 3 - datagen/utils/btclightclient.go | 11 +- datagen/utils/btcstaking.go | 93 ++++++-- datagen/utils/btctimestamp.go | 4 - datagen/utils/common.go | 13 ++ datagen/utils/eots.go | 4 - datagen/utils/finality.go | 5 - go.work.sum | 20 +- packages/btcstaking/src/tx_verify.rs | 8 +- packages/test-utils/src/lib.rs | 18 +- .../testdata/add_finality_sig_1_msg.dat | Bin 359 -> 359 bytes .../testdata/add_finality_sig_2_msg.dat | Bin 359 -> 359 bytes .../testdata/btc_delegation_1_{1,3}.dat | Bin 0 -> 2196 bytes .../testdata/btc_delegation_1_{1}.dat | Bin 0 -> 1748 bytes .../testdata/btc_delegation_1_{2}.dat | Bin 0 -> 1748 bytes .../testdata/btc_delegation_2_{1}.dat | Bin 0 -> 1748 bytes .../testdata/btc_delegation_2_{2}.dat | Bin 0 -> 1748 bytes .../testdata/btc_delegation_3_{1}.dat | Bin 0 -> 1748 bytes .../testdata/btc_delegation_3_{2}.dat | Bin 0 -> 1748 bytes .../test-utils/testdata/btc_light_client.dat | 200 +++++++++--------- .../testdata/btc_light_client_fork.dat | 22 +- .../testdata/btc_light_client_fork_msg.json | 2 +- .../test-utils/testdata/btc_timestamp.dat | Bin 5867 -> 5835 bytes .../testdata/btc_timestamp_header0.dat | 4 +- .../testdata/btc_timestamp_header1.dat | 4 +- .../test-utils/testdata/btcstaking_params.dat | Bin 217 -> 217 bytes .../testdata/commit_pub_rand_msg.dat | Bin 182 -> 182 bytes .../test-utils/testdata/eots_testdata.json | 2 +- .../testdata/finality_provider_1.dat | Bin 201 -> 202 bytes .../testdata/finality_provider_2.dat | 5 +- .../testdata/finality_provider_3.dat | Bin 202 -> 202 bytes .../test-utils/testdata/pub_rand_value.dat | 2 +- packages/test-utils/testdata/raw_ckpt.dat | Bin 102 -> 102 bytes 38 files changed, 284 insertions(+), 312 deletions(-) create mode 100644 datagen/utils/common.go create mode 100644 packages/test-utils/testdata/btc_delegation_1_{1,3}.dat create mode 100644 packages/test-utils/testdata/btc_delegation_1_{1}.dat create mode 100644 packages/test-utils/testdata/btc_delegation_1_{2}.dat create mode 100644 packages/test-utils/testdata/btc_delegation_2_{1}.dat create mode 100644 packages/test-utils/testdata/btc_delegation_2_{2}.dat create mode 100644 packages/test-utils/testdata/btc_delegation_3_{1}.dat create mode 100644 packages/test-utils/testdata/btc_delegation_3_{2}.dat diff --git a/contracts/btc-staking/src/contract.rs b/contracts/btc-staking/src/contract.rs index c0d84fc0..b51e3fdc 100644 --- a/contracts/btc-staking/src/contract.rs +++ b/contracts/btc-staking/src/contract.rs @@ -370,35 +370,14 @@ pub(crate) mod tests { /// Build an active BTC delegation from a BTC delegation pub(crate) fn get_active_btc_delegation() -> ActiveBtcDelegation { - let del = get_btc_delegation(); + let del = get_btc_delegation(1, vec![1]); new_active_btc_delegation(del) } // Build a derived active BTC delegation from the base (from testdata) BTC delegation - pub(crate) fn get_derived_btc_delegation(del_id: u8, fp_ids: &[String]) -> ActiveBtcDelegation { - assert!( - 0 < del_id && del_id < 10, - "Derived delegation id must be between 1 and 9" - ); - let mut del = get_active_btc_delegation(); - - // Change the BTC public key and the finality provider public key list based on the id - del.btc_pk_hex = format!("d{del_id}"); - del.fp_btc_pk_list = fp_ids.to_vec(); - - // Avoid repeated staking tx hash - let mut staking_tx = del.staking_tx.to_vec(); - // FIXME: First byte can be 0xff, just by chance - staking_tx[0] += del_id - 1; - // FIXME: Binary breaks lexicographical order. - del.staking_tx = Binary::new(staking_tx); - - // Avoid repeated slashing tx hash - let mut slashing_tx = del.slashing_tx.to_vec(); - slashing_tx[0] += del_id - 1; - del.slashing_tx = Binary::new(slashing_tx); - - del + pub(crate) fn get_derived_btc_delegation(del_id: i32, fp_ids: &[i32]) -> ActiveBtcDelegation { + let del = get_btc_delegation(del_id, fp_ids.to_vec()); + new_active_btc_delegation(del) } /// Get public randomness public key, commitment, and signature information diff --git a/contracts/btc-staking/src/finality.rs b/contracts/btc-staking/src/finality.rs index 9c93a7fc..4fcfa49e 100644 --- a/contracts/btc-staking/src/finality.rs +++ b/contracts/btc-staking/src/finality.rs @@ -660,7 +660,7 @@ pub(crate) mod tests { assert_eq!(res.height, 0); // Add a delegation, so that the finality provider has some power - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); del1.fp_btc_pk_list = vec![pk_hex.clone()]; let msg = ExecuteMsg::BtcStaking { @@ -794,7 +794,7 @@ pub(crate) mod tests { let _res = execute(deps.as_mut(), initial_env.clone(), info.clone(), msg).unwrap(); // Add a delegation, so that the finality provider has some power - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); del1.fp_btc_pk_list = vec![pk_hex.clone()]; let msg = ExecuteMsg::BtcStaking { @@ -950,7 +950,7 @@ pub(crate) mod tests { let _res = execute(deps.as_mut(), initial_env.clone(), info.clone(), msg).unwrap(); // Add a delegation, so that the finality provider has some power - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); del1.fp_btc_pk_list = vec![pk_hex.clone()]; let msg = ExecuteMsg::BtcStaking { diff --git a/contracts/btc-staking/src/queries.rs b/contracts/btc-staking/src/queries.rs index 1df7100a..884528f1 100644 --- a/contracts/btc-staking/src/queries.rs +++ b/contracts/btc-staking/src/queries.rs @@ -296,6 +296,7 @@ mod tests { let fps = crate::queries::finality_providers(deps.as_ref(), None, None) .unwrap() .fps; + let fp1 = FinalityProvider::from(&new_fp1); let fp1_pk = fp1.btc_pk_hex.clone(); let fp2 = FinalityProvider::from(&new_fp2); @@ -348,8 +349,8 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex]); - let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp2.btc_pk_hex]); + let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); + let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[2]); let msg = ExecuteMsg::BtcStaking { new_fp: vec![], @@ -419,9 +420,8 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let del1 = - crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex.clone()]); - let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp1.btc_pk_hex]); + let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); + let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[1]); let msg = ExecuteMsg::BtcStaking { new_fp: vec![], @@ -508,8 +508,8 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex]); - let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp2.btc_pk_hex]); + let del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); + let del2 = crate::contract::tests::get_derived_btc_delegation(2, &[2]); let msg = ExecuteMsg::BtcStaking { new_fp: vec![], @@ -564,9 +564,8 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a couple delegations - let mut del1 = - crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex.clone()]); - let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[new_fp1.btc_pk_hex]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); + let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[1]); // Adjust staking amounts del1.total_sat = 100; @@ -655,8 +654,8 @@ mod tests { let _res = execute(deps.as_mut(), initial_env, info.clone(), msg).unwrap(); // Add a couple delegations - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[fp1_pk.clone()]); - let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[fp1_pk.clone()]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); + let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[1]); // Adjust staking amounts del1.total_sat = 100; @@ -746,7 +745,7 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add a delegation - let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[new_fp1.btc_pk_hex]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1]); // Adjust staking amount del1.total_sat = 100; @@ -803,13 +802,9 @@ mod tests { let _res = execute(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); // Add some delegations - let mut del1 = crate::contract::tests::get_derived_btc_delegation( - 1, - &[new_fp1.btc_pk_hex, new_fp3.btc_pk_hex], - ); - let mut del2 = - crate::contract::tests::get_derived_btc_delegation(2, &[new_fp2.btc_pk_hex.clone()]); - let mut del3 = crate::contract::tests::get_derived_btc_delegation(3, &[new_fp2.btc_pk_hex]); + let mut del1 = crate::contract::tests::get_derived_btc_delegation(1, &[1, 3]); + let mut del2 = crate::contract::tests::get_derived_btc_delegation(2, &[2]); + let mut del3 = crate::contract::tests::get_derived_btc_delegation(3, &[2]); // Adjust staking amounts del1.total_sat = 100; @@ -836,18 +831,19 @@ mod tests { power: 225, } }); - assert_eq!(fps[1], { - FinalityProviderInfo { - btc_pk_hex: fp3_pk.clone(), - power: 100, - } - }); - assert_eq!(fps[2], { - FinalityProviderInfo { - btc_pk_hex: fp1_pk.clone(), - power: 100, - } - }); + // fp1 and fp3 can be in arbitrary order + let fp1_info = FinalityProviderInfo { + btc_pk_hex: fp1_pk.clone(), + power: 100, + }; + let fp3_info = FinalityProviderInfo { + btc_pk_hex: fp3_pk.clone(), + power: 100, + }; + assert!( + (fps[1] == fp1_info && fps[2] == fp3_info) + || (fps[1] == fp3_info && fps[2] == fp1_info) + ); // Query finality providers power with limit let fps = crate::queries::finality_providers_by_power(deps.as_ref(), None, Some(2)) @@ -860,12 +856,7 @@ mod tests { power: 225, } }); - assert_eq!(fps[1], { - FinalityProviderInfo { - btc_pk_hex: fp3_pk.clone(), - power: 100, - } - }); + assert!(fps[1] == fp1_info || fps[1] == fp3_info); // Query finality providers power with start_after let fps = @@ -873,11 +864,6 @@ mod tests { .unwrap() .fps; assert_eq!(fps.len(), 1); - assert_eq!(fps[0], { - FinalityProviderInfo { - btc_pk_hex: fp1_pk.clone(), - power: 100, - } - }); + assert!(fps[0] == fp1_info || fps[0] == fp3_info); } } diff --git a/datagen/go.mod b/datagen/go.mod index f781aee6..5bdabe6b 100644 --- a/datagen/go.mod +++ b/datagen/go.mod @@ -16,7 +16,6 @@ require ( require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute v1.25.1 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect @@ -205,7 +204,6 @@ require ( golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.169.0 // indirect - google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect diff --git a/datagen/go.sum b/datagen/go.sum index be783ab0..3dba182a 100644 --- a/datagen/go.sum +++ b/datagen/go.sum @@ -30,8 +30,7 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= @@ -69,11 +68,7 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= -cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= @@ -174,8 +169,7 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= @@ -274,8 +268,6 @@ github.com/aws/aws-sdk-go v1.44.312/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8 github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/babylonlabs-io/babylon v0.9.2-0.20240828065350-81ee356f706d h1:bdpcpkscxL23EZ2Lsuw0S2Furvs4J7gdlrIvaPE9rE0= github.com/babylonlabs-io/babylon v0.9.2-0.20240828065350-81ee356f706d/go.mod h1:CaUOkhCPxIrwns3etbCnpdpA73UP5mBh7nJdAKdwEcE= -github.com/babylonlabs-io/babylon v0.9.2 h1:c1k6b15bZOYm1V2rG5kJ3nwhODGXAtFaQ0SnOA2b5Ss= -github.com/babylonlabs-io/babylon v0.9.2/go.mod h1:t7B4e+ooD2oYvAxkegtNKDL9bXe+vU29a8xnCQh+UKo= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -354,9 +346,6 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= -github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 h1:DBmgJDC9dTfkVyGgipamEh2BpGYxScCH1TOF1LL1cXc= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -473,8 +462,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= @@ -668,8 +655,7 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -1116,22 +1102,17 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1291,8 +1272,7 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1424,7 +1404,6 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= @@ -1504,8 +1483,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1555,8 +1535,7 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1566,8 +1545,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1677,11 +1654,9 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 h1:W5Xj/70xIA4x60O/IFyXivR5MGqblAb8R3w26pnD6No= google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8/go.mod h1:vPrPUTsDCYxXWjP7clS81mZ6/803D8K4iM9Ma27VKas= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1724,8 +1699,7 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1743,8 +1717,7 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/datagen/utils/btccheckpoint.go b/datagen/utils/btccheckpoint.go index b9edf137..71064c07 100644 --- a/datagen/utils/btccheckpoint.go +++ b/datagen/utils/btccheckpoint.go @@ -1,10 +1,8 @@ package utils import ( - "math/rand" "os" "path/filepath" - "time" "github.com/babylonlabs-io/babylon/testutil/datagen" ) @@ -14,7 +12,6 @@ const ( ) func GenRawCheckpoint(dir string) { - r := rand.New(rand.NewSource(time.Now().UnixNano())) randomRawCkpt := datagen.GenRandomRawCheckpoint(r) randomRawCkpt.EpochNum = 12345 randomRawCkptBytes, err := randomRawCkpt.Marshal() diff --git a/datagen/utils/btclightclient.go b/datagen/utils/btclightclient.go index 7a94707e..008bc909 100644 --- a/datagen/utils/btclightclient.go +++ b/datagen/utils/btclightclient.go @@ -2,16 +2,13 @@ package utils import ( "encoding/json" - "math/rand" "os" "path/filepath" - "time" bbnapp "github.com/babylonlabs-io/babylon/app" "github.com/babylonlabs-io/babylon/testutil/datagen" "github.com/babylonlabs-io/babylon/types" btclctypes "github.com/babylonlabs-io/babylon/x/btclightclient/types" - "github.com/btcsuite/btcd/chaincfg" ) var ( @@ -52,12 +49,10 @@ type BtcHeaders struct { } func GenBTCLightClient(initialHeaderHeight uint64, mainHeadersLength uint64, dir string) []*btclctypes.BTCHeaderInfoResponse { - r := rand.New(rand.NewSource(time.Now().Unix())) - headers := datagen.NewBTCHeaderChainWithLength( r, initialHeaderHeight, - chaincfg.RegressionNetParams.PowLimit.Uint64(), + net.PowLimit.Uint64(), uint32(mainHeadersLength)).GetChainInfoResponse() resp := &btclctypes.QueryMainChainResponse{Headers: headers} respBytes := cdc.MustMarshal(resp) @@ -73,8 +68,6 @@ func GenBTCLightClientFork( forkHeader *btclctypes.BTCHeaderInfoResponse, dir string, ) { - r := rand.New(rand.NewSource(time.Now().Unix())) - height := forkHeader.Height length := mainHeadersLength - height + 1 // For an accepted fork @@ -92,8 +85,6 @@ func GenBTCLightClientForkMessages( forkHeader *btclctypes.BTCHeaderInfoResponse, dir string, ) { - r := rand.New(rand.NewSource(time.Now().Unix())) - height := forkHeader.Height length := mainHeadersLength - height + 1 // For an accepted fork diff --git a/datagen/utils/btcstaking.go b/datagen/utils/btcstaking.go index b106f980..60c9f19e 100644 --- a/datagen/utils/btcstaking.go +++ b/datagen/utils/btcstaking.go @@ -2,32 +2,25 @@ package utils import ( "fmt" - "math/rand" "os" "path/filepath" + "strings" "testing" - "time" sdkmath "cosmossdk.io/math" "github.com/babylonlabs-io/babylon/testutil/datagen" bbn "github.com/babylonlabs-io/babylon/types" "github.com/babylonlabs-io/babylon/x/btcstaking/types" "github.com/btcsuite/btcd/btcec/v2" - "github.com/btcsuite/btcd/chaincfg" "github.com/stretchr/testify/require" ) const ( FP_FILENAME = "finality_provider_%d.dat" - BTC_DEL_FILENAME = "btc_delegation.dat" + BTC_DEL_FILENAME = "btc_delegation_%d_{%s}.dat" BTCSTAKING_PARAMS_FILENAME = "btcstaking_params.dat" ) -var ( - net = &chaincfg.RegressionNetParams - r = rand.New(rand.NewSource(time.Now().Unix())) -) - func GenParams(dir string) ([]*btcec.PrivateKey, uint32) { t := &testing.T{} @@ -54,6 +47,16 @@ func GenParams(dir string) ([]*btcec.PrivateKey, uint32) { return covenantSKs, covenantQuorum } +func getParams(dir string) (*types.Params, error) { + params, err := os.ReadFile(filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME)) + if err != nil { + return nil, err + } + bsParams := types.Params{} + err = bsParams.Unmarshal(params) + return &bsParams, err +} + func GenFinalityProviders(dir string, numFPs int) { t := &testing.T{} @@ -71,24 +74,52 @@ func GenFinalityProviders(dir string, numFPs int) { } } -func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuorum uint32) { +func getFinalityProvider(dir string, i int) (*types.FinalityProvider, error) { + fileName := fmt.Sprintf(FP_FILENAME, i) + fpPath := filepath.Join(dir, fileName) + fpBytes, err := os.ReadFile(fpPath) + if err != nil { + return nil, fmt.Errorf("error reading finality provider %d: %w", i, err) + } + + fp := &types.FinalityProvider{} + err = fp.Unmarshal(fpBytes) + if err != nil { + return nil, fmt.Errorf("error unmarshaling finality provider %d: %w", i, err) + } + + return fp, nil +} + +func getFinalityProviders(dir string, numFPs int) ([]*types.FinalityProvider, error) { + fps := make([]*types.FinalityProvider, numFPs) + for i := 1; i <= numFPs; i++ { + fp, err := getFinalityProvider(dir, i) + if err != nil { + return nil, err + } + fps[i-1] = fp + } + return fps, nil +} + +func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuorum uint32, idx int, fpIdxList []int) { t := &testing.T{} // read params - params, err := os.ReadFile(filepath.Join(dir, BTCSTAKING_PARAMS_FILENAME)) - require.NoError(t, err) - bsParams := types.Params{} - err = bsParams.Unmarshal(params) + bsParams, err := getParams(dir) require.NoError(t, err) - delSK, _, err := datagen.GenRandomBTCKeyPair(r) - require.NoError(t, err) + // read finality providers' BTC PKs + fpBTCPKs := make([]bbn.BIP340PubKey, len(fpIdxList)) + for i, idx := range fpIdxList { + fp, err := getFinalityProvider(dir, idx) + require.NoError(t, err) + fpBTCPKs[i] = *fp.BtcPk + } - // restaked to a random number of finality providers - numRestakedFPs := int(datagen.RandomInt(r, 10) + 1) - _, fpPKs, err := datagen.GenRandomBTCKeyPairs(r, numRestakedFPs) + delSK, _, err := datagen.GenRandomBTCKeyPair(r) require.NoError(t, err) - fpBTCPKs := bbn.NewBIP340PKsFromBTCPKs(fpPKs) stakingTimeBlocks := uint16(5) stakingValue := int64(2 * 10e8) @@ -124,13 +155,31 @@ func GenBTCDelegations(dir string, covenantSKs []*btcec.PrivateKey, covenantQuor btcDelBytes, err := btcDel.Marshal() require.NoError(t, err) - btcDelPath := filepath.Join(dir, BTC_DEL_FILENAME) + + // filename + fpIdxListStr := make([]string, len(fpIdxList)) + for i, idx := range fpIdxList { + fpIdxListStr[i] = fmt.Sprintf("%d", idx) + } + fileName := fmt.Sprintf(BTC_DEL_FILENAME, idx, strings.Join(fpIdxListStr, ",")) + + btcDelPath := filepath.Join(dir, fileName) err = os.WriteFile(btcDelPath, btcDelBytes, 0644) require.NoError(t, err) } func GenBTCDelegationsAndParams(dir string) { covenantSKs, covenantQuorum := GenParams(dir) + // 3 FPs GenFinalityProviders(dir, 3) - GenBTCDelegations(dir, covenantSKs, covenantQuorum) + // 2 BTC delegations under 1st FPs + GenBTCDelegations(dir, covenantSKs, covenantQuorum, 1, []int{1}) + GenBTCDelegations(dir, covenantSKs, covenantQuorum, 2, []int{1}) + GenBTCDelegations(dir, covenantSKs, covenantQuorum, 3, []int{1}) + // 2 BTC delegations under 2nd FPs + GenBTCDelegations(dir, covenantSKs, covenantQuorum, 1, []int{2}) + GenBTCDelegations(dir, covenantSKs, covenantQuorum, 2, []int{2}) + GenBTCDelegations(dir, covenantSKs, covenantQuorum, 3, []int{2}) + // a BTC delegation restaked to 1/3-th FPs + GenBTCDelegations(dir, covenantSKs, covenantQuorum, 1, []int{1, 3}) } diff --git a/datagen/utils/btctimestamp.go b/datagen/utils/btctimestamp.go index 4d729c19..1f71963b 100644 --- a/datagen/utils/btctimestamp.go +++ b/datagen/utils/btctimestamp.go @@ -1,11 +1,9 @@ package utils import ( - "math/rand" "os" "path/filepath" "testing" - "time" txformat "github.com/babylonlabs-io/babylon/btctxformatter" "github.com/babylonlabs-io/babylon/crypto/bls12381" @@ -36,8 +34,6 @@ func signBLSWithBitmap(blsSKs []bls12381.PrivateKey, bm bitmap.Bitmap, msg []byt } func GenBTCTimestamp(dir string) { - r := rand.New(rand.NewSource(time.Now().Unix())) - t := &testing.T{} valSet, privSigner, err := datagen.GenesisValidatorSetWithPrivSigner(10) if err != nil { diff --git a/datagen/utils/common.go b/datagen/utils/common.go new file mode 100644 index 00000000..bb9d1b0e --- /dev/null +++ b/datagen/utils/common.go @@ -0,0 +1,13 @@ +package utils + +import ( + "math/rand" + "time" + + "github.com/btcsuite/btcd/chaincfg" +) + +var ( + net = &chaincfg.RegressionNetParams + r = rand.New(rand.NewSource(time.Now().Unix())) +) diff --git a/datagen/utils/eots.go b/datagen/utils/eots.go index 7a69f62e..5a869717 100644 --- a/datagen/utils/eots.go +++ b/datagen/utils/eots.go @@ -3,10 +3,8 @@ package utils import ( "encoding/hex" "encoding/json" - "math/rand" "os" "path/filepath" - "time" "github.com/babylonlabs-io/babylon/crypto/eots" "github.com/btcsuite/btcd/btcec/v2/schnorr" @@ -29,8 +27,6 @@ type EotsTestData struct { } func GenEOTSTestData(dir string) { - r := rand.New(rand.NewSource(time.Now().UnixNano())) - sk, err := eots.KeyGen(r) if err != nil { panic(err) diff --git a/datagen/utils/finality.go b/datagen/utils/finality.go index 8ad4e7f9..12614fe0 100644 --- a/datagen/utils/finality.go +++ b/datagen/utils/finality.go @@ -5,7 +5,6 @@ import ( "math/rand" "os" "path/filepath" - "time" "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/btcec/v2/schnorr" @@ -49,8 +48,6 @@ func GenRandomPubRandList(r *rand.Rand, numPubRand uint64) (*datagen.RandListInf } func GenCommitPubRandListMsg(startHeight uint64, numPubRand uint64, pubRandIndex uint64, dir string) (*datagen.RandListInfo, *btcec.PrivateKey) { - r := rand.New(rand.NewSource(time.Now().UnixNano())) - sk, _, err := datagen.GenRandomBTCKeyPair(r) if err != nil { panic(err) @@ -129,8 +126,6 @@ func NewMsgAddFinalitySig( } func GenAddFinalitySig(startHeight uint64, index uint64, randListInfo *datagen.RandListInfo, sk *btcec.PrivateKey, dir string, signatureIndex uint32) *ftypes.MsgAddFinalitySig { - r := rand.New(rand.NewSource(time.Now().UnixNano())) - blockHeight := startHeight + index blockHash := datagen.GenRandomByteArray(r, 32) diff --git a/go.work.sum b/go.work.sum index 10cc2206..46249995 100644 --- a/go.work.sum +++ b/go.work.sum @@ -9,7 +9,6 @@ cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVqux cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go/accessapproval v1.7.2 h1:W55SFrY6EVlcmmRGUk0rGhuy3j4fn7UtEocib/zADVE= cloud.google.com/go/accessapproval v1.7.2/go.mod h1:/gShiq9/kK/h8T/eEn1BTzalDvk0mZxJlhfw0p+Xuc0= cloud.google.com/go/accessapproval v1.7.4 h1:ZvLvJ952zK8pFHINjpMBY5k7LTAp/6pBf50RDMRgBUI= @@ -161,7 +160,7 @@ cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdi cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= cloud.google.com/go/contactcenterinsights v1.11.1 h1:dEfCjtdYjS3n8/1HEKbJaOL31l3dEs3q9aeaNsyrJBc= cloud.google.com/go/contactcenterinsights v1.11.1/go.mod h1:FeNP3Kg8iteKM80lMwSk3zZZKVxr+PGnAId6soKuXwE= cloud.google.com/go/contactcenterinsights v1.12.0 h1:wP41IUA4ucMVooj/TP53jd7vbNjWrDkAPOeulVJGT5U= @@ -607,7 +606,6 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/storage v1.37.0/go.mod h1:i34TiT2IhiNDmcj65PqwCjcoUX7Z5pLzS8DEmoiFq1k= -cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= cloud.google.com/go/storagetransfer v1.10.1 h1:CU03oYLauu7xRV25fFmozHZHA/SokLQlC20Ip/UvFro= cloud.google.com/go/storagetransfer v1.10.1/go.mod h1:rS7Sy0BtPviWYTTJVWCSV4QrbBitgPeuK4/FKa4IdLs= cloud.google.com/go/storagetransfer v1.10.3 h1:YM1dnj5gLjfL6aDldO2s4GeU8JoAvH1xyIwXre63KmI= @@ -1044,6 +1042,7 @@ github.com/envoyproxy/go-control-plane v0.12.0 h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjl github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= @@ -1259,7 +1258,6 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5 github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= @@ -1969,22 +1967,16 @@ go.etcd.io/gofail v0.1.0 h1:XItAMIhOojXFQMgrxjnd2EIIHun/d5qL0Pf7FzVTkFg= go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.3/go.mod h1:Dts42MGkzZne2yCru741+bFiTMWkIj/LLRizad7b9tw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= @@ -2108,7 +2100,6 @@ golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5 h1:ObuXPmIgI4ZMyQLIz48cJYgSyWdjUXc2SZAdyJMwEAU= golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5/go.mod h1:UBKtEnL8aqnd+0JHqZ+2qoMDwtuy6cYhhKNoHLBiTQc= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2210,7 +2201,6 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= @@ -2231,7 +2221,7 @@ google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2Pr google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/api v0.157.0/go.mod h1:+z4v4ufbZ1WEpld6yMGHyggs+PmAHiaLNj5ytP3N01g= google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -2259,7 +2249,6 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240122161410-6c6643bf1457/go. google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:PVreiBMirk8ypES6aw9d4p6iiBNSIfZEBqr3UGoAi2E= -google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 h1:W5Xj/70xIA4x60O/IFyXivR5MGqblAb8R3w26pnD6No= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230920204549-e6e6cdab5c13 h1:AzcXcS6RbpBm65S0+/F78J9hFCL0/GZWp8oCRZod780= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:qDbnxtViX5J6CvFbxeNUSzKgVlDLJ/6L+caxye9+Flo= google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c0220f h1:hL+1ptbhFoeL1HcROQ8OGXaqH0jYRRibgWQWco0/Ugc= @@ -2282,7 +2271,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= @@ -2296,13 +2284,11 @@ google.golang.org/grpc v1.60.0/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.27 h1:kJdccidYzt3CaHD1crCFTS1hxyhSi059NhOFUf03YFo= diff --git a/packages/btcstaking/src/tx_verify.rs b/packages/btcstaking/src/tx_verify.rs index 569169b9..a51b15f3 100644 --- a/packages/btcstaking/src/tx_verify.rs +++ b/packages/btcstaking/src/tx_verify.rs @@ -208,7 +208,7 @@ mod tests { #[test] fn test_check_transactions() { - let btc_del = get_btc_delegation(); + let btc_del = get_btc_delegation(1, vec![1]); let params = get_params(); let staking_tx: Transaction = deserialize(&btc_del.staking_tx).unwrap(); @@ -240,7 +240,7 @@ mod tests { #[test] fn test_verify_unbonding_tx_schnorr_sig() { - let btc_del = get_btc_delegation(); + let btc_del = get_btc_delegation(1, vec![1]); let params = get_params(); let staking_tx: Transaction = deserialize(&btc_del.staking_tx).unwrap(); @@ -288,7 +288,7 @@ mod tests { #[test] fn test_verify_slashing_tx_adaptor_sig() { - let btc_del = get_btc_delegation(); + let btc_del = get_btc_delegation(1, vec![1]); let params = get_params(); let staking_tx: Transaction = deserialize(&btc_del.staking_tx).unwrap(); @@ -337,7 +337,7 @@ mod tests { #[test] fn test_verify_unbonding_slashing_tx_adaptor_sig() { - let btc_del = get_btc_delegation(); + let btc_del = get_btc_delegation(1, vec![1]); let params = get_params(); let btc_undel = btc_del.btc_undelegation.unwrap(); diff --git a/packages/test-utils/src/lib.rs b/packages/test-utils/src/lib.rs index 5fdb8849..9268a350 100644 --- a/packages/test-utils/src/lib.rs +++ b/packages/test-utils/src/lib.rs @@ -24,7 +24,7 @@ const BTC_TIMESTAMP_HEADER1: &str = "btc_timestamp_header1.dat"; const PARAMS_DATA: &str = "btcstaking_params.dat"; const FINALITY_PROVIDER_DATA: &str = "finality_provider_{}.dat"; -const BTC_DELEGATION_DATA: &str = "btc_delegation.dat"; +const BTC_DELEGATION_DATA: &str = "btc_delegation_{idx}_{fp_idx_list}.dat"; const COMMIT_PUB_RAND_DATA: &str = "commit_pub_rand_msg.dat"; const PUB_RAND_VALUE: &str = "pub_rand_value.dat"; const ADD_FINALITY_SIG_DATA: &str = "add_finality_sig_{}_msg.dat"; @@ -155,8 +155,20 @@ pub fn get_finality_provider(id: i32) -> FinalityProvider { FinalityProvider::decode(fp_data).unwrap() } -pub fn get_btc_delegation() -> BtcDelegation { - let btc_del_path = find_testdata_path().join(BTC_DELEGATION_DATA); +pub fn get_btc_delegation(idx: i32, fp_idx_list: Vec) -> BtcDelegation { + let fp_idx_list_str = format!( + "{{{}}}", + fp_idx_list + .iter() + .map(|&x| x.to_string()) + .collect::>() + .join(",") + ); + let btc_del_filename = BTC_DELEGATION_DATA + .replace("{idx}", &idx.to_string()) + .replace("{fp_idx_list}", &fp_idx_list_str); + let btc_del_path = find_testdata_path().join(btc_del_filename); + println!("btc_del_path: {:?}", btc_del_path); let btc_del_data: &[u8] = &fs::read(btc_del_path).unwrap(); BtcDelegation::decode(btc_del_data).unwrap() } diff --git a/packages/test-utils/testdata/add_finality_sig_1_msg.dat b/packages/test-utils/testdata/add_finality_sig_1_msg.dat index 39b0ebaece87188dc97dd96538fe1782af2e834a..8a2e988b01dcbefef0979f4045194c5f8693b7f8 100644 GIT binary patch literal 359 zcmV-t0hs;@Dq>=8F*j>4b~$HwZfJ8hd3b6yV`X7uV`pe=HgRrtbZ~cMcyeuSW_NfJ zAZ&9K^RyD=k)c03EeSY5YC4+{2@lff_1@1Q7VvNMBp78PASHw515#54O?JgzxEO0p z7&ufXG&xH;kwMXLmoYBgdn&F02nrAZ8X!j^9PZFkr`y?O!8YYjeej7FB{AMVfVv*G z`AI<7p$#G+JY84M?ri6z*AJqH&ZVLxhl`HR|ZH)87epi)CTt34Q7zNWd*!+T{#4M~N~ZC`Lk9cXi;y-m{CB z6v|@_4~k_1;=tc}p{bmb=bgl!Iv^iTD>J84apZZR#9E6?iU=vXu` Fm+=Miq+9?1 literal 359 zcmV-t0hs;@Dq>=8F>YjaaB^dLaxiOdG<7#?G-@_=Gir8bGd5*pH*ha;pB3UdV?<+|zI>|>-WX*fAXmJXTIIGRqRSK2byFe% zcMRU~9Fm$ye61=x$R4fR-72mD2nrAZ8X&Oq_Vf6+fTI4@t(LcA8h~Jw9lktbQ?;nx zHIYrhN`xXH6HxpDk&T@$(n*RyqoX&}bTlmUNl>?F0cVXtFwIoWA|TEm*-^^ioBqy0 z7{n7Ukp|N57UlsHox>PY+(dQHq?#fiZYKe7HfACLSswS#@EydfM~=^N7+3QlJKzn7{~N!`S^ijs)pF z`Wh<`e%9TOJU*N(O!?PlT!jT>Iw1OVkEJ?#f`R)ZO9-4W^dIlSFarsw6H7{;0^C1! FaK8xco#X%j diff --git a/packages/test-utils/testdata/add_finality_sig_2_msg.dat b/packages/test-utils/testdata/add_finality_sig_2_msg.dat index 925497614fca341d514165984767a94fa81b5a86..d9a351a152b8430a4790667999b8e4874f659a93 100644 GIT binary patch literal 359 zcmV-t0hs;@Dq>=8F?M-#IB{rba5r#wb9ZBKaC&uga&s_bba*m1GInt^VQg|ZGiG-Z zAZ&9K^RyD=k)c03EeSY5YC4+{2@lff_1@1Q7VvNMBp78PASHw515#54O?JgzxEO0p z7&ufXG&xH;kwMXLmoYBgdn&F02nrAZ8X!j^9PZFkr`y?O!8YYjeej7FB{AMVfVv*G z`AI<7p$#G+JY84M?ri6z*AJqH&ZVLxhl`HR|ZH)87epi)CTt34Q7zNWd*!+T{#4M~N~ZXiYQ}2DYS7%BRlh z5)mqCoouy03$w*UB)kH@xw2ijIv_^LL9ty>DOv2Oj0SaEIYEjAed;%^MRr%G;D456 F&sZVOpl1L8 literal 359 zcmV-t0hs;@Dq>=8F>N(%YjS30aCmJuHFbD6H#B22dNpTuIdybwW@IvCYi@UCH#svB zAgh#3j5?g=&Fz3Zt{rvGQ>ha;pB3UdV?<+|zI>|>-WX*fAXmJXTIIGRqRSK2byFe% zcMRU~9Fm$ye61=x$R4fR-72mD2nrAZ8X&Oq_Vf6+fTI4@t(LcA8h~Jw9lktbQ?;nx zHIYrhN`xXH6HxpDk&T@$(n*RyqoX&}bTlmUNl>?F0cVXtFwIoWA|TEm*-^^ioBqy0 z7{n7Ukp|N57UlsHox>PY+(dQHq?#fiZYKe7HfACLSswS#@EydfM~=^N7+3QlJKzf4Fh>NFaA3{PPE+ z77ZL4ErjkxpNf9sxq&U2pgIp_O6=bZOIlsr6qFQD9s#9waU z0(?>4-oyaUAn%|cuN%R5eBe!W4GkRvk?5<1BY8vNAtw7K6hHA`rKM#rffL^~gl=uX zW(8q2X0(XhY6$vIDPyRSX=MAwK~-T6tV#l5JBxDEt|^>dFoQ_1ZPgcG0xNnZCi6$s zeOue8KC)lcB<+$RX;7Mti`d|UxJG;8@0u7n_@qmMe;C%SZM1yI@SLtsTL`+V4Spin zVc7`muo9}ECI?R+`1Btco79CQ`G{4X=#Ar*$-X5*9ScYRQ6|>GGpwPwz=vAlyGUUS z*Yg=uKwtm>K%4}6;#Qlm=APh`e!O@}Q0}ou(y=w8hRISQ<*RR6Gz3#0y8!zK4Gg4d zh8(N_rTS-@d5^EjWzP@w znzAno=!3})=a_%h`o41G&DXFULnf4=Ojw@W!~vw|j~UgO zU-A^6|3IrcrVp_5X{0{Yl4Y7_mkA!-vQOg1oQ&*1Gz(%%BSEIEKXkKTY-4;x9irJO z95sOpve4>r$+|zAsJd&Sa=UanNz^UOI;He{jKrqcSHdW%(QMn&Qp%$Q1c6tEFa_TI zS_gV!Prb$FWpA7z>2!zgST2;Uc{JP6RmznvQLwOC^a^xZG6?zL-tHRaoQl(3 zCry}w4q?Mx@q>U};;XrWKE~51Pg$?dkbZsSr}yg0iJqKH4&Xh=e<`~WuTP;I0}9lBD75Y;5BG&=QNpWuBJ8DsU zg1VRP{Mw&BF!=0Wade?Zfd;^12IO^vFu@P``B14Nzh{s{%Kwzgn|fW?J%ymW4L^Bu z+E?TBzsb90KJ9o|MR>JD&P??=?rVkqBh3B#vI$oPiS$g(0HNh(uhrcdj`mXOlpfL= za~8CNGT~a zC^<>_J&HJ=iW{F=VU%82H!sZRCFRNb_;yk|W0Jd|PJ26)T2=)?uL^Vsdjw&MoFA6P zA@1tBZ1S{Xq(m|N^`fcTbnCTSaaJTEgfmIou46j1r(wv!>BXZ6vVxQ?+~Dy;Sux1Z zj7F=NiU(X+*@%$4L$C><*lI+Ex-mmZv|c~umF(aQ(Y$tH)5OWHGl|DxKBw*kV$Jn~ zfvCLLu8N;tRyD=bBxhsyRRGIdpW%w8&LVW3hFkZ>{K-|$NK##PD+O__o1vu;PndUh7!O?c zsnn3>R{7?+8-0D9Et4~PdjGPM*ocqtN2PT%MAu3)f6jW69e<<06a41vbyf7r-5Hxn bg{JH2%kp+L!EU`NoN|TYpq!#7gv7rA8eHWr literal 0 HcmV?d00001 diff --git a/packages/test-utils/testdata/btc_delegation_1_{1}.dat b/packages/test-utils/testdata/btc_delegation_1_{1}.dat new file mode 100644 index 0000000000000000000000000000000000000000..26ce339460a5e7a050078a3341bdea65ad9afa53 GIT binary patch literal 1748 zcmb7@dpy%?9LIliY>SX<2QRYR=0zkUm&nc{5+b*V(acOTWQ^pPQyV)nq)tRxDQ7yX zR=H$USZd0x++rLen``cp>#W5kjNnVHZlPX4jfCgag{=pE7>RaPY6>d>P{< zD+Nc>8s}>&XH`-1$njDiyo>NESsxev>~fdz+%luD%Gn^i&<3K#mg^q~NW5N6{W^8C z)B+np@oeZ)MxW-}MjsiGv$+-u5^~h*HDUb$X;J6gg1G$q9kvEm;at*D9v3DT=RJ-T z^PWu5HPIV^8c#wk$jr`4D2fac0{{RdJ4TJ0Zf-ZW9aX0aywN>(jWg_v8!oE}=DCx2|X1A|J$9 zk%fzb0H6|AqKIqcL{iLN!gXN&o_YnT#_P)*_cWGh_c$2@+MGZLCfJbJ!q&)(ksVZ4 z&`DRv686F91>lR<9j7$VpXEf^?+dm$qNDDn@KfW1^kXbOTbOg(zxX)I&4 zH5*Z4v&e2uCS#&+d}-byo!7oQ5FLk_I{X(p_`wnfNO|Za-64wkAwSg@P_%}+r|f48 zKOAh#cJAbL+}eI~QIol5o%On(qgd3=Iyd3sIV+Z5nlqW<8vvn!!3Q0~EBNK z2nHt!dq`qS4E|mLdg_%O#({9=wBjw_B&@oOux2nXJo6^q_tsa&7 zumqhe#f1Y;%aw@Yy`Ae>t90Uecd7RDieWt#ChmIw2rlVVCB*;uG~dBZ5m;MX%n1ZU zoW#J0Ho%kCBq(ZSRwak-#=j!Hvw<&uLhKoJY37o!o18q*m9u&8dhB|^jzNyO7o8XG z-vK;czP8%`*(=|e9n%~S+i4nv7w1P%b()&*h(9^+6#p#HZ1%*qyx)2cw+&E1B2H+f zOUy*MfkaG{bLI}zJyd37wg8@VATO8Q=|2cvo!R8{83_so-`&j)e?zO)z^@D0VY~WQ zJB%oMt3v==T$VJ zo$*~CPN^kMkvTTKP^AuRJGG!Zy2yPv!`CZwKWVhkds|R}l!MjtwkQ*!)FVBe#DMk% z{jC`$%Y!Vlp@vqp^(PL+s*VPW!(CX1)?f_=?O3LlxO8fryzNP0hOaLZLVg6>Tf5}^ zp_^NNS;63T$uKfw<5dbs#My#jKH~VCSO(AEL^@f*b|fTKOx45Ex9`wf@dK@@`XnEn zsoquGqgTH^&;|L~eclaAsan8QF*QaC3MF zSoF1wEQ;mnFd z*+kD9%9vbZObd#Y^bkX{24ZJZht9;M$>5M{OO)**$`5;nbhR0_>Xr)5d9oZtwdZ0| zLR?o0tF=aFu-cE2jdrs3RHbnJvOwo*=fqZJ2S3BXOj*O?w1m+kGND4ld}d$lKQX5u A9RL6T literal 0 HcmV?d00001 diff --git a/packages/test-utils/testdata/btc_delegation_1_{2}.dat b/packages/test-utils/testdata/btc_delegation_1_{2}.dat new file mode 100644 index 0000000000000000000000000000000000000000..bedfc0ba93a378b2f094500a15a90078c4d55d11 GIT binary patch literal 1748 zcmb7@dpHwn9LKkj8Oc3{+{!_@Y&Oj8SW0pkB7{hj`)Ev-TSR7|BqG9Dsl!-jOwr_a ztb~sHT}ef*TZP;*b?ls;^KZ`k&-=X3`+eWf@A?SEF!h;vae`$E3wt94 zP0qAx%z|MYFezu1|ZYMYm?E=Y0}K56>|b3Dil>vLTAz=Bs() zMLl!RQ4H{Xdw>8r`o!%M0M!%94QdhXrDHkD=JQZGR;->ZOp;gp5Hdt?XzaPidQ{RY zrp^lj0MIC^RKd~V7?B*ZervWa`D`tY&4!GwkZHVKr$iuddjd*nredNgYEAe*u>yW8 z51_>S?z~fx^T>%L()vJap)@c1qXf2(3U9%?S73G;jLx-~u3Uc{*6AZaK{~%yC(~e* z0T*6kyT}Vc6qu`y#9=?G0~~~QNjZBF{Gx;ZMgzp#bC4A zTyCp_KFfG*mAPaiQsVgzY=K~v-=cjo@D7CwR4+s9q*FR!qokqtP{(|}If^?5ffoRH zoY*s={eY8KJEu!}%AO_!s06kWd(G5Wrx03mm@XFa+%~62z|EVn+_1MAhm4GKw{`zx zxUzqQXFG)2PbzCj(Pa&y~G1~oB$?< zz^*w2A>i#YMJ>uLGS6pCtH+z<->w`w{T|F++~&~Utg1^&%3fjw7J4hb0Tq)}lEgQS zW18!VtJm_&paGO8mF4oAj4y(2C8y&Z&;kM`9#to7&;NSd@SSY`48Ic~&@UnrEad%< zgF6-gD0|~S2lFcuXJOg%GlwKF?xzb7=fF!|p2PcIEDL>_>y5hA&E!3=#1F$X;jN~I zP@~Q4=qRU0o#0o_ZYn+0Zt}FjcZXQ1fj!T8*?$e2o&T9(K1Kh_Fje%kanu7r<;QzS z*W11j`!Rl&TP?9vU{`39*`%gft3Afe%VDk-<$aCsS>&I+6VaL&#xyj( zgRsE{=2)cfS9po@d_L&Qm9r+tLNg5TV+ev*-*L0ut9?^I9%l!J5u!zoLg*my*GHue zbBpOPPB-7k$i3(MzJnjQe;M5rLe13qlppssTep(yqlGW@+uIDGt|4B*_usFjb=0#j z0`$)9;Af(T#cO{rRbi`iQwk@S>~Br6klMlH!v%$1rB{Z$S&eu>A1-amHzLv=?6xRt zrKLMACK3?Ey}K*j(zS@0+O(TT`DxeC(o65m#e-&O6RAo_1qe#-K3@ZWCQHYs;K9Rj z+)A9#Qta3Y<(b{(gr`)sJ{=fNG;L#xP}7W~nC!YaX;P}mqx`gIXkky&vIXo+Vau`h zl+hXuKHJ%3`%$^xq)(shtWz@=f;2jom}}Q1X>`Vrk%YN4xtA)){P literal 0 HcmV?d00001 diff --git a/packages/test-utils/testdata/btc_delegation_2_{1}.dat b/packages/test-utils/testdata/btc_delegation_2_{1}.dat new file mode 100644 index 0000000000000000000000000000000000000000..384277788c6a2f982cafc88a73de016e5b319852 GIT binary patch literal 1748 zcmd1LJod*GV{+AE&MOHM~W}Z+?&ng zjS`QBx#GlEj%f$1g7@*MU#yst6uHs8!~W$Jiyc$jce+1$(--V%8=P-GyK9FCr;@_` z*p7m#fP}-h*Iu>Pw#q(S?tS90f?!$LYX_#Vx0Px}8ZX!l-m+UXthlz5-Kl|*iGhKE zQAMHc$Uf)v?Hb{+;yzm6I07Zpf`v{R)|BrS;d{uEy1ZuXlgkYMfq;o&ifK7e2ZK_e zf~C*INl&-!3)sv5-QL0~Y09r{MYc@!=q78wmv7UghPe9LoPJ$n`np?UhI+n!|F zId!Flv;}^7)0o`UbFbxsL+c&(yOp9sd9DApG_K`-_B(i&#GYTryWD=&FShWg^G!c&*R;V)+nNMF|Ub(7YcFQG5X?;MyR)5IwsbN7SBd%Yt-NL z-Afoj_Eg8`US1D%o!W5#XMsF^ATvz)`r7-esPI! z3ffkpx$k}ApXZYfDfwPAo!+e5xuI@t{;g2Y>DRxw6o@JZGi!Z`7Pwngn0nA~Nv@u( z$D$u65^r8*%t$TjXXlCor$M3<0HeeNcp6;8eR7h^_uFY7+YdjH49VPaG=)X{FDsYD z#>h#H+wUy^8O$IAO<_-U_x?`2>S;VZ&@xz8%vF;?DqCdz{il2$dlqFpb2)Sgq!yCG zCcPt+!nVyMDTOIH+^c_WVRkQ^hw)8Ji$PV5`i!fQf}EdS^^Uz3ayqo-%iABTgLkm# ztGw88_VO>&Ltlf#8w}ihZe9PSRK_ZMwCw3iE#gwx^!e^0XSHYT)%%fpe5u%k&YFXd z--hQ;&FqhFK7Ct5;;L(%eTDbZ>nyXq-2b(ExpTxGS{`qz`|Eu}N2$k$kIowyK=u%k z!rJv0N!;4Pt9?DK*~_`lgBQxUCA^&dD`JJ^wfPT`HeM|E?u+}wwk_I9<^GlJ|PB8A;|?s(YrT~u> zeg4P%Kb@Sq<-zY2$F2SZaew?7llJfG<}zMSW#5~>L&Rbl_B%5gr4W%b9n4qURc<;Z ze4h7Q^os2p#8<6fd*xxqt1l{FFaMe4d%A=B*^h+mZ_{kO?*(jnbU`vBIOWlre@FVW zADcSp{-3zz>o<@s1Vhc?qw`^@ucbCVPiB4MUmHAMI9qYkwwy~J7XJ;g+{v6ZsaWRJ z+pvheeyMGzu9QyDS(bnOLR~~i&%49ywxY|NAN=?QvV~xnIhz_)&d zmK+wUU;Y?Rayg*4ZgzT~{^{il?MnY7@6HNq-o^R%^{FRLfzr0u%#T@>3S_IZReJIM F001f_9Txxq literal 0 HcmV?d00001 diff --git a/packages/test-utils/testdata/btc_delegation_2_{2}.dat b/packages/test-utils/testdata/btc_delegation_2_{2}.dat new file mode 100644 index 0000000000000000000000000000000000000000..57eb69df3719397d27d7b9533458c5fdbf496af7 GIT binary patch literal 1748 zcmb7@dpy%?9LIk{+g!>y(~CwN{n18a-0MR<~;vAujloAp6C62eV_Luh4S_e*7NfXB}N2A zog<=6NG3+cLB9SG5hN-pI+$ue3^Vre(lob zPJvEOEE{xRwr%KE#KJK7N%^NK&&bFcd?7*7nwuW8n`aqN#p)}wU>D0gY!iFwI!9)f z-jt1anplOUbBJu^o(ytx%jc#`e_Kos<)x{rILw^Q4YU|Nupm__(DUxO1+#C=%)bC- z?VgiA2Q~9**P4OoE9h7ZByVfod9y5JrHxWv$r zr*a}J$;$G&N?kQHK>VgaWqQRcOlp*hfFJ_uC5c&?H*cl9OUoob2 z-fA?82dUC>ZZY9yup9pn!tI>WN>};UKI@!@R!n$@Yf6N^_ zx_^Tf6hGyCR!XIcRxLS^`VjQUIXj>M-0(>)(xfYD-F}9>=-up8uy6u~6`TE{l}69YyY>?XE*0RB{Ge`4A;^zJ3grNt&C zkci{|*gkx|ey?PBh+U>Ewi263$>wXum=#>B9&w+5tS@eINUz87o?}L8S5vTPi5Qn6 z5)4BWf5<-~#Ar_(7CdR7S|{9;wTm**UX$VNm6Tait-SNIN`-5>TO)iqBwwEn5dFe3 zAyS^-9Ne-1pj}!2IasrlpJCZ@EF% z$xk2k4yyK*ZUCVRd)Q+6VjHtPbv~t?^J&JZ6fXt!w%^pB`sk z{!F3L1&s>jsNbGsw8hwZy4}ek=i>@Y3#K`#xE`}C@s{M))^D6G7>37L3@t40EyMvS z%D}zr?vSE!NkceyJFa2wB4TQ z1nK*3;b&s1*Pxy9s~RZ748h?OF_YZoypE|VkLOPtCe3me_4N~=+-HR-|DA4Y1)tdy z!=nqaw6HnhA+r>(2hN`Pzf*!llpl5t<8f)#JQ`7C5Q;fYuOFey?O>~XbP?vp%i}EL zw9dBcY6uGOZfOb~;8`u#)b#W`J@1a1UPB_clfwB>yL62&qWrLDnA+4+k%QsYox{v4 zHjZ6)yF8o+QabS5SZYmQ;n)*8Nl#@2A5wS$a#RKxb$d;`gZyN>xtDmbaYY5@{W=8c F_7AQjA`bun literal 0 HcmV?d00001 diff --git a/packages/test-utils/testdata/btc_delegation_3_{1}.dat b/packages/test-utils/testdata/btc_delegation_3_{1}.dat new file mode 100644 index 0000000000000000000000000000000000000000..29c6e8b60e31f87e4a6ebdec09d36b4c92effbfc GIT binary patch literal 1748 zcmda;MS*lx9&5&{ua#k3r#gFz`! z!M^fc#f0DXr(?HF)K6viShRg=CU->K@u@qq=2W%vuDdOu4pPX#AX&CjY|UD*D=jNM_H)3Xgfw&tBpU|V1kd`G=wjln6;Y>*0|Bbj-k zj!E4*E56Ig!>M@Xj(cyqI0P4&?cAQm*Y1Ixl_C9WGA++7lfW8^PH8G4kBj zu9VYUJR6^_(P7{B@QlVa<_SMd&l!t7%rK4>4BqXYxMY&qMCXQ^H=B;|E|f@6{#4__ zVQ@w%0BleCPT%4;+q5~03w-+domM&Z=TCg5UTZyb#)fM#kJ$fw1lr@q8uv4b!FKH@ zrzW+*XiUND7;C zkWdO+bBv@ErsS|><>OOZ%#F>bt3+$HLoV&d&P(|rcgT$5I zm}4`uw?6pCZJ@>7-}7^#>ghM4(k@PqzRqP{+xgY{Wj#&V!WzMMN)K*tmrv}NA7p!Jo(t>m<}&vEKdY+3A}=*w|1sZtC12OQ zB$n%0iUIZ-hu`!3UnTh;Y!4ABY>(8>KY2`hPdwQ;{phdFmm)8fsAQPl>kCN#&SRVZ z)G<=JQ1OR&$8rm)wEss#xudj;{@9=P<2SGQY;m^2Vivy)qfrVGIn&`#fK;ne{Y~RX zd&NZ8E}bBpoU{4;mU^2iQ@d{0V|@psyGk}%ulv_u6CdG=loENaH@`-) zYH6S6!-M;-O!l(;^^w`>v>pH9Q~&j}T?!^jGy76Fy2g2|4WBKe=0V@`Yb-KipsI{Z>?A z1utJ}TE+yEJ`dJyzZmVclOMP}&Hfm|(v%eYRVelD=Z8iWnwxfa)kVd}980XVy04@V z_#$m;mi=}8w_K}!7$%)vEabbVe|ina3YphpB^=iA$24BB8@y$=XjpM=C%aPvBNGDy z17qy*M+?^#xj$zqIJB!(>|gc;j~(se%I}P~Y7`ZJpM1`ScX6;i!+#)PVwhrD4%ES* z6sW-NHATCBtD(b8*+-k@gIA;!uJ7*mP2RFyG*s&G!H+*P1=K+b85ktXR*F0iU|oIb z%kw|;>Vlu${i}NN>xOwA9cw_cK@E(IK#Fnl{Y%iX%J4|zWw&BOtyt4^x3rvFVsCTR}&{A;)sQ^0i z>U4*hZ}-kBkju(jc>4BF**j?)PMSVHxYw_TUEqI%=p>M`D2KxpbM8rUU3ffuqui}s z(=Rse%74fDx`=z)b(I+@y*IPJx0TOS{CCLf%5!%Mp5p!e@()jJS$}uFEU$}3eZ+y? zKb|I~aVe}X-@y5(YdhnP(21G5*miwZuCP2+`N#LgnvY5QLuS4W5OQL=DEcq>(v#37 zK97U%eTb>FiuksZqk3Cy!^eNQ|6^7^*5Z5^&Q+gu=Ht8n`J(>kk~Yn~9=1e1C;IlG zu1{g_r>}g=0J5h#KKC+1NaxvSi!ZF$U7xO)ajg8Jt@^ho#yT&3&mAsL0ot?sg;^`l zZsL-QK6aPKBPa=l81=88cFg`q{bSz-f@^1i&aU0iFgoGZ{YDm0mX??y78Ki)Oq;@Pia_ z`Hl5~;U@!YjX$sW0*YQCXbRI>=k_%{D&B0}6LX=}6T_o(Kj~au{xx-*=cnrzPGu~O z1gV9ju$TlwDeR3pNhwUp;s4A#jAr`+6`s4FI1oDdl5t9f20{=0j~%W3PD zZd~#4Y>3}tC0BP%(7(wVFZfoCK*8d_#D$8GYt-YsB)t(>1%Y!|1w#}U(A1r3u!P}rU z#m~$6z)Q=I(koViY#|tG4tJg2C!DWn5&ko0Qde=@=Sd!1(rGuO-d$ksmB}yoAjq_X zWBcs7#7N6;<(IRio!)bPX4vxK!UUn|8|GbjJKxO64P*g$XNEb)bBy0|rehAGdzQj_3e-P~wr)!47fqFs0X FHvol)B1ixL literal 0 HcmV?d00001 diff --git a/packages/test-utils/testdata/btc_light_client.dat b/packages/test-utils/testdata/btc_light_client.dat index d11be439..8d62696b 100644 --- a/packages/test-utils/testdata/btc_light_client.dat +++ b/packages/test-utils/testdata/btc_light_client.dat @@ -1,202 +1,202 @@  -04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e68a1667889e817755d848c5c6b9947e4f48bae0b7b173d4935bfc5ea23543331e23c088653ffff7f20fcffff4f@6f2369690ab1b07e89833138cb0d46b13d1a99d3684ba388a34b88c43a66cc64"18446744073709551617 +04000000f67ad7695d9b662a72ff3d8edbbb2de0bfa67b13974bb9910d116d5cbd863e68624d209aa05a2c6c7834d35bc7d001dbf92dcfd24a78c03e88baa2ab14555688eb088653ffff7f2001000000@7f92e963bd69764d4d2ea198892dcc9f75a4bccb31630e504f7ba6488e9133d6"18446744073709551617  -0400000064cc663ac4884ba388a34b68d3991a3db1460dcb383183897eb0b10a6969236fd94ef66459d5c855d5c15e63042478f68d9329dd4c6945c101c2664534aa58347b098653ffff7f2001000000@073236ed96ce5ef6705a6f3ca74188beecb92b96062fa274dbc72a101b4c90d5"18446744073709551619 +04000000d633918e48a67b4f500e6331cbbca4759fcc2d8998a12e4d4d7669bd63e9927f068cb35a65046f9d1e6df64e49fb263bf1433d655a22ff2fb49507c69aa0add0c20a8653ffff7f20fcffff5f@69814779d5c39e9ab50dd637eae24c8a0fac87b1c196bd78b7068214fcfee621"18446744073709551619  -04000000d5904c1b102ac7db74a22f06962bb9ecbe8841a73c6f5a70f65ece96ed363207b3e66352d83eed0b87c159a14f514cdb5590d54283e8fe89c31f452ce560143ded0a8653ffff7f20feffff3f@2c8e48915c772447f1a58bce9161c8fb052df1c704f792668f3bb8cf0856b5b4"18446744073709551621 +0400000021e6fefc148206b778bd96c1b187ac0f8a4ce2ea37d60db59a9ec3d5794781695d8fa5e38142de8f6a9e163273aeda736ed3ff88a5466365a07cc08b7dbb6f41570d8653ffff7f20f2ffffef@0153092569182feeb3f83d37eb10b2ec386c1c7d61dc4cd3eb961acb70952e90"18446744073709551621  -04000000b4b55608cfb83b8f6692f704c7f12d05fbc86191ce8ba5f14724775c91488e2c1877b4acdf0e65cc79a090d802f7c8806304903cc7ee55ab1644d6414c5ba623040d8653ffff7f20f4ffffef@1563aadc29a298787a1ef349e9358f254ddb73fd3fec53341a83316e133b57bc"18446744073709551623 +04000000902e9570cb1a96ebd34cdc617d1c6c38ecb210eb373df8b3ee2f1869250953014d27b34ca762c4aae1bfbfaad48412282753e2a6e39236ebffe600c16b12b49e5e0f8653ffff7f20f2ffffef@2fe97f6e5fb8bdb514b9517793a8933117b9f9f41558504cad143e2670b946b6"18446744073709551623  -04000000bc573b136e31831a3453ec3ffd73db4d258f35e949f31e7a7898a229dcaa63155b848d2d5567b4ef78aa1506ece17cbaf948f365dfa85e9b6e1726c72b7824243f0f8653ffff7f2001000020@42def2dd2389189f3f45d8d5bc8da6f218f26eba1967ff59c469a5e9f4602de5"18446744073709551625 +04000000b646b970263e14ad4c505815f4f9b9173193a8937751b914b5bdb85f6e7fe92fe1b2234fa509c4d123c093ee4922a100fd4aaafd1ba94dc4ecdcea5945e9a3965d108653ffff7f2002000000@19dcdff60b170f526bae4278a00007abdef81cca23ab28117aa060e16006278f"18446744073709551625  -04000000e52d60f4e9a569c459ff6719ba6ef218f2a68dbcd5d8453f9f188923ddf2de427bf13e12892b79ea5704a22f263a53c5731f8f8b0aa94bc99b36d4a8b1fac83ff6108653ffff7f20fdffff3f@594f699b1e85ca7c8d4d6c127242614dd975338b9f3334adaa8968f0bbdfc534"18446744073709551627 +040000008f270660e160a07a1128ab23ca1cf8deab0700a07842ae6b520f170bf6dfdc196c8508211fc08cf3eeb2ccd4383c7d7f6b80c2bbfb33fdc3bf4608f4e9e29aa8bb118653ffff7f20f3ffffef@191baba4b781de5035a8ce1345d344fe87aa8d3afc40908960e6aeb060a9547a"18446744073709551627  -0400000034c5dfbbf06889aaad34339f8b3375d94d614272126c4d8d7cca851e9b694f591510b0080280f40631c1de2ee0f4c7b3a46ccba43b1a4b6ae28450d292d76699a3128653ffff7f20feffff3f@3a925583e9a9e2e4a492728f1b84a2687ed362cda9c9fadc07e280dd4bab982e"18446744073709551629 +040000007a54a960b0aee660899040fc3a8daa87fe44d34513cea83550de81b7a4ab1b19cdcfd2b0786f5a12ec93c6f441ca4b620d804dd01610decd80f220618f299b3b1f138653ffff7f20f3ffffef@52ac53e5d5903aff83590b242c98dbafe274f9708b3451e63191bff71eb0dfc4"18446744073709551629  -040000002e98ab4bdd80e207dcfac9a9cd62d37e68a2841b8f7292a4e4e2a9e98355923a2fd4d5ad7604da3aee2ce92c8fecbed45b0082c2d92162573c249b8c19bf179399138653ffff7f20ffffff1f@422d8bdc84d59bf2e9af2ad259a24661bc96df3d5c75a656c8e4de75562daa37"18446744073709551631 +04000000c4dfb01ef7bf9131e651348b70f974e2afdb982c240b5983ff3a90d5e553ac52faba97bd812e2da5c1894bc46d0a9deb8b0fb4246e90d6789114920d9f595fd6ec158653ffff7f2000000020@500af0e36a34c7c7ef30aa98a12a17685809057d3b95fa8d6a515ae2472fbae2"18446744073709551631  -0400000037aa2d5675dee4c856a6755c3ddf96bc6146a259d22aafe9f29bd584dc8b2d42a7e2e286777332008e752e919f9ed77069456a1c7da5fa33ab88e370cdcbf92df4148653ffff7f20f3ffffef@0ebfe718a72377030b4b717749577bb242870ca177b212f8688baa5fd636ccb3 "18446744073709551633 +04000000e2ba2f47e25a516a8dfa953b7d05095868172aa198aa30efc7c7346ae3f00a50bd986d7e786e32a9316fce1ffe0b88709341982dada49052e6d571dee1849adde4178653ffff7f20feffff4f@75d0c9aed9ed81a48dc08d8789183f62b26c57c196161cee646b39138d6576fc "18446744073709551633  -04000000b3cc36d65faa8b68f812b277a10c8742b27b574977714b0b037723a718e7bf0e63b2b3225efb4f23be7576b2f6b6d32ab2dbbec1cc2e9abecd5b2caf6bb990f037168653ffff7f2001000000@135bb2b6bc9b19d35dd38e1b90710a61165ff225ea08ca79180364192c35ff8f +04000000fc76658d13396b64ee1c1696c1576cb2623f1889878dc08da481edd9aec9d075e1150bf91935f865521eb2bec3eb28596e8873403e56fac71bf22f7ee1b9385a2d198653ffff7f2003000000@1a33fcbf1daf9cab521ab7cdfc80c456916ca2a5c5be1eceac082c65e01519cf "18446744073709551635  -040000008fff352c1964031879ca08ea25f25f16610a71901b8ed35dd3199bbcb6b25b13cd1ab852dfb3fecf3c56b15f71c861de19159ec345fe81b26b72422169d5c806de188653ffff7f2002000000@18f800d0331ac34b61f86773a10e588091a0a15d9f00217f8c5f22da6e7760f5 "18446744073709551637 +04000000cf1915e0652c08acce1ebec5a5a26c9156c480fccdb71a52ab9caf1dbffc331af02e9af608e8efa8bda142980ed5b85179f9a7171e14bcdad2050116624d0af1791b8653ffff7f20f4ffffef@45f93d8ad0f7a8dc6cf2dca125888e5deab1f92e1060f241693db117c95f9022 "18446744073709551637  -04000000f560776eda225f8c7f21009f5da1a09180580ea17367f8614bc31a33d000f818ba4488fe83c0492aa1f6a6678d5ee99df72569f3807a0466a92cd3660a110656631a8653ffff7f20f2ffffef@68cbf96c70c483dbee28cc0ba29bd769e25c6b7c30e5640603b7d212437078e0 "18446744073709551639 +0400000022905fc917b13d6941f260102ef9b1ea5d8e8825a1dcf26cdca8f7d08a3df945ded6c44873ab80f4dd59aae0cc4654a973838806e26bc3490afd9435de7b80470b1e8653ffff7f20f2ffffef@7af319a93369cca1da2af876dd4fd71d3eb0486af9e5d9240c524345676eb494 "18446744073709551639  -04000000e078704312d2b7030664e5307c6b5ce269d79ba20bcc28eedb83c4706cf9cb68d117d168df6aea78da9c530776dd5d55218003482d2bcd16481b8d3f9f4b5c9d991b8653ffff7f2000000010@1e655512993a3ae149829e0597ff79a780841c27ec7993409b391949fb4a9700 "18446744073709551641 +0400000094b46e674543520c24d9e5f96a48b03e1dd74fdd76f82adaa1cc6933a919f37a2349f0d02de39dca2d5857406e251fb121a45715a860bcdcd4f1cca3abb8b11e20208653ffff7f20f7ffffef@0ff694cfe06073b6ebf7cc7f238d400eec5d789b418b883da9fafe5ce25c40ac "18446744073709551641  -0400000000974afb4919399b409379ec271c8480a779ff97059e8249e13a3a991255651e81ea534dceb037f58db3a654d412b537b8fed69200435546c61d9baf524105bfa41d8653ffff7f20f5ffffef@1775a8eb456862472d05c1d0d9a45af26755dae9a7f996edb601eea2de93d845"18446744073709551643 +04000000ac405ce25cfefaa93d888b419b785dec0e408d237fccf7ebb67360e0cf94f60f30c57c5675bef2bf0301246053ab33c867b397385ed3eef061d89f108e68ba5ba8218653ffff7f20f4ffffef@23a04740d2d653b2c1e84c8f8d876286dffcf886024773c2676d507c5a53b412"18446744073709551643  -0400000045d893dea2ee01b6ed96f9a7e9da5567f25aa4d9d0c1052d47626845eba87517127630c20627b26b0a5fe2001bf3ee724402c543c513a25e1524deccd4252eb75d1f8653ffff7f20f2ffffef@778fa7cfba092c64de81497657de9e896bfbdd06e6908e538804021c583eba3b"18446744073709551645 +0400000012b4535a7c506d67c273470286f8fcdf8662878d8f4ce8c1b253d6d24047a02375ea38ce4a33bed6a4be50adac0315c9a9c9f99c7c73bdafe318693838eb147aef238653ffff7f2001000000@0b5b6446d610ba146bb8cea677e29bd404e4dffd749ffd62b4a6c996badb34ef"18446744073709551645  -040000003bba3e581c020488538e90e606ddfb6b899ede57764981de642c09bacfa78f77e1eb5a02d3440657f3e9e44eef508f4a18017bd4ef3394f2b28ed0fb12f7613984218653ffff7f20f2ffffef@0d42000db1c84fbb14f8086870c504d89280f98068e98bdb5fb1d5aafb9420c5"18446744073709551647 +04000000ef34dbba96c9a6b462fd9f74fddfe404d49be277a6ceb86b14ba10d646645b0b34a428a3545b8208e748e47dcf67df81c7cd5d988bf0a9495c15a3e89d4584c78d268653ffff7f2001000000@0b560ea8df8e558bff8e6dc254386a35399c9da2cab85585bbe45860aa179247"18446744073709551647  -04000000c52094fbaad5b15fdb8be96880f98092d804c5706808f814bb4fc8b10d00420d428f2f0d0c49adab6cc895ab242e959b1bc56c93081b0d111018ec3b8d60c254d3238653ffff7f20f3ffffef@1977879546e46b6592e58be83b3a1eb90cf094bb15214a8cd4e63003d9fcdda2"18446744073709551649 +04000000479217aa6058e4bb8555b8caa29d9c39356a3854c26d8eff8b558edfa80e560b1c9bcce894f4a68304ddc4580f58d30f4ac5102eadaf9903a0d5add0a1b275ac34298653ffff7f20f3ffffef@17c693b13b4aeb3b650f53461c8c515ab1215c13434e7c98c2ffd9baacb0b0c7"18446744073709551649  -04000000a2ddfcd90330e6d48c4a2115bb94f00cb91e3a3be88be592656be44695877719bf56c2771aedd68aff09938d5cf98061998cdc438ad593ac5776cb6a5597407f63268653ffff7f20f2ffffef@79d9c72935553ac5c7b973bdfd7d0c96b9b64ac2e02176e1a9f32d7bdfbe8f46"18446744073709551651 +04000000c7b0b0acbad9ffc2987c4e43135c21b15a518c1c46530f653beb4a3bb193c6174cfd5ce0e65a657c3a22539152d906cd83aa544369e127f81db9980adebf315bbe2a8653ffff7f20f2ffffef@17a51aed307e9c02008176a30fc89c18d7392c957e8ce9a53a6c4c7e2395f644"18446744073709551651  -04000000468fbedf7b2df3a9e17621e0c24ab6b9960c7dfdbd73b9c7c53a553529c7d9797277942840fa19cbb099bc09d705a9a5e90728dc9819ed001a78df971004824709288653ffff7f20f2ffffef@0475382d57c451eac1ab5ad6200b4b32ab31de12c732e95d90d53564df68a73f"18446744073709551653 +0400000044f695237e4c6c3aa5e98c7e952c39d7189cc80fa3768100029c7e30ed1aa5177761f825b865de87071275485c76fdb02091adcee8f39a9330e47dbce9e50b48512d8653ffff7f20f3ffffef@4c8befa902f7001c28ec3a239cea1d9406e0297c2fcceb59f12b657fd2480276"18446744073709551653  -040000003fa768df6435d5905de932c712de31ab324b0b20d65aabc1ea51c4572d387504aa4bff0c2461c286d5318b8ca4a0e2a767c714ef9127db2ab2e9509452fe6dc4d0298653ffff7f20f3ffffef@3b24041544e0460f822c4d12e2ae513e8af9c718c73f7f164ceea8b27697110c"18446744073709551655 +04000000760248d27f652bf159ebcc2f7c29e006941dea9c233aec281c00f702a9ef8b4c705381e3a87f0eb901e731f5f2c49c42a6a514da95283c6621645631ee414e05b52e8653ffff7f20f2ffffef@161096f2d582666110ee290c530e88ec34945d5377d19f93b67b40954aa76636"18446744073709551655  -040000000c119776b2a8ee4c167f3fc718c7f98a3e51aee2124d2c820f46e0441504243b85a95642866c3b10c4467042a07434dd46f9c2fc27c4737d466629f22ef0c9acce2b8653ffff7f20f2ffffef@62dedf05ddfb9c73fe41f5a19c6eb4f023219fdd8b7ec01197012e8bd1bb48b3"18446744073709551657 +040000003666a74a95407bb6939fd177535d9434ec880e530c29ee10616682d5f29610166be77d2bd0e7978659ba92c1be8d9d447668f3166fd7abcafb5103005f0be91555308653ffff7f20f3ffffef@375e1386b5fbdd9f32d808915275809bd9a23657f1bc363f2318337d3bb3d213"18446744073709551657  -04000000b348bbd18b2e019711c07e8bdd9f2123f0b46e9ca1f541fe739cfbdd05dfde62fae6e276583ced3d5283a21a1f17e6e9d466e202e58b2246ec7014001ee997b9fb2c8653ffff7f20f2ffffef@04302933ccf7755743a2f31d1274c14a1fa5c1c1f67a7cf452dc0932deda3849"18446744073709551659 +0400000013d2b33b7d3318233f36bcf15736a2d99b8075529108d8329fddfbb586135e37ca7abeadd34ca10d6db368735f5c45855576edb433271f82bac3b8c91111b165d7318653ffff7f20f4ffffef@6f42498209183b3eabcc2422ef7af4d3b6d1b7ac6bd1130b56737295f02f2a7e"18446744073709551659  -040000004938dade3209dc52f47c7af6c1c1a51f4ac174121df3a2435775f7cc332930040862ebb137afcca783474902cc810b2df13f6cc1553ce1c5ecd690ad15fb5cef522f8653ffff7f20f2ffffef@71090cd2da07f31f00cf51e2cc8de3dcf040248379f936caeb699ff6bb0dba5f"18446744073709551661 +040000007e2a2ff0957273560b13d16bacb7d1b6d3f47aef2224ccab3e3b18098249426ff32d3f0f1cde910a286dc2ed988afe603ac7efdbbde0f13d68268d05628e2d0fcd328653ffff7f20f4ffffef@3f01eb92f7be9188307e1cf013e460344db18707bf6cfd7a11c4f1b2c2598960"18446744073709551661  -040000005fba0dbbf69f69ebca36f979832440f0dce38dcce251cf001ff307dad20c097145529e5786cc3c79080822a2ddf1f459a9fe4c6f85c24834b881c9fcfef63fdcee308653ffff7f20f2ffffef@234738a8f5672285b9a8cdd0d83489c73cdacb885ec67f7ef752ae66e07ed7e0"18446744073709551663 +04000000608959c2b2f1c4117afd6cbf0787b14d3460e413f01c7e308891bef792eb013fd84f7678efdbd1394ba125daa951ebeb56756482d89e647a7e3f00838d1b1c05eb348653ffff7f2001000000@313e9d8cb883f7aa234386df03e3ef55ef75de31e5edce30e123d3eb4b32409a"18446744073709551663  -04000000e0d77ee066ae52f77e7fc65e88cbda3cc78934d8d0cda8b9852267f5a838472335e02cc5db12660d6423d8e2b046179e829aa2cb327b7ccc349dd9b482f41b69b0328653ffff7f20f3ffffef@54d2e65cba6d9691b6301a684b50b0f59a07f6e105ec7a75be8f71e361394848"18446744073709551665 +040000009a40324bebd323e130ceede531de75ef55efe303df864323aaf783b88c9d3e31144ddfe54f225bd6be50467f74a1e61c0573d08925fd4b0791c634359bfd51cd3e368653ffff7f20f3ffffef@2ad88a96bda63402738f8d767c704c4502e77b94017833f7edf36827ade51a7a"18446744073709551665  -0400000048483961e3718fbe757aec05e1f6079af5b0504b681a30b691966dba5ce6d2542b74613cb405829e72f348e7917782e84ae6a42638afbdc81a65df5fc27f2be639358653ffff7f20f5ffffef@75056e4410e8070449b4e62f96645718558f2c6b6e6428c751b55ab50da97f8f"18446744073709551667 +040000007a1ae5ad2768f3edf7337801947be702454c707c768d8f730234a6bd968ad82a3c1da24e6d8427bcce609946212f496f5eafee246183559cc1afaa94e575ddd285388653ffff7f20f4ffffef@0cbe407d7d4afc354030a85ee182d58760ce82456cbb70d61dfee7f63f225906"18446744073709551667  -040000008f7fa90db55ab551c728646e6b2c8f55185764962fe6b4490407e810446e0575bfe4b216c61de4c3c6f3ca67c5c0c31224436489c96c0be012121868b06e4eabda378653ffff7f20f5ffffef@64d1001e5342a70f5c45202138cb93e7263b682c14609390434d503c88c94a3e"18446744073709551669 +040000000659223ff6e7fe1dd670bb6c4582ce6087d582e15ea8304035fc4a7d7d40be0c08f9ca6f047ea9064d7939ab6b646fdceb22f80a04eeb17b2f592409a4242795683a8653ffff7f20f2ffffef@20cbc1f718092eaa71f1efd75ed0de1ec5850d1fd2ffa45c7e77f3b881e05dc9"18446744073709551669  -040000003e4ac9883c504d43909360142c683b26e793cb382120455c0fa742531e00d164ec14595095e242890240081bacfc6bc71bd6f413ff3343591f4327006c151cddc4398653ffff7f20f4ffffef@77f4a115976c8325bcbbeff13d66add988295a4521ad945dd55e878956ed13ac"18446744073709551671 +04000000c95de081b8f3777e5ca4ffd21f0d85c51eded05ed7eff171aa2e0918f7c1cb20c0747a3967adda08bc799440f27e2341c9a6f01d92625c4e3102e2791ff1de3bca3c8653ffff7f20fdffff3f@7cfa280e50e71b8a7dd07d26cdea6e3f21c672f5c945eb449a92397f3fd8d548"18446744073709551671  -04000000ac13ed5689875ed55d94ad21455a2988d9ad663df1efbbbc25836c9715a1f477bb4bf8493433201775c97709b7b5c2bb7742d4b2789e150391c10c2796a2b256653c8653ffff7f20f3ffffef@026f0ab78e429e3e4b6647afa0186ef17afcf63ed5553d1bba7e9ae2c9b97d38"18446744073709551673 +0400000048d5d83f7f39929a44eb45c9f572c6213f6eeacd267dd07d8a1be7500e28fa7cd1ab3f990a864c4c23ce792c55c1af521790d9998817124c15ad4a38f8f35f61e43d8653ffff7f20f5ffffef@1b41ad320e3fa0b86c0b8c54609019bf45c75391d1dd0a7cea6b76f5532887ba"18446744073709551673  -04000000387db9c9e29a7eba1b3d55d53ef6fc7af16e18a0af47664b3e9e428eb70a6f02bcfd191345f767f6725e3e96c149bb1a14fd4a76741a98c98e81072057dcca09d53e8653ffff7f20f4ffffef@11ed5d7d5444f642bcce009d8e300ba80645f796bf0e52d4895fb4ff2302149e"18446744073709551675 +04000000ba872853f5766bea7c0addd19153c745bf199060548c0b6cb8a03f0e32ad411b3a6e8a15c8398408cf4bfdea13d66480591dcab2e4ad30b8a1b3b58a21c008915e3f8653ffff7f2001000010@1ab540770f7b4fdef61181658859839b1a5912740eca7b2e7069437d70280eed"18446744073709551675  -040000009e140223ffb45f89d4520ebf96f74506a80b308e9d00cebc42f644547d5ded116fb4a2f10afc162f9968f4e93c99113240808b0125edd3a24fe49982a6c833d05b418653ffff7f20f3ffffef@7804f5785195c20ee9dcbf518a46a5452c2808744f3b3c535a68d8f432352691"18446744073709551677 +04000000ed0e28707d4369702e7bca0e7412591a9b835988658111f6de4f7b0f7740b51ae3c7d37fa0c67750d781e195834f3f236a2ad866b8c45f6c78ea7ff26c4b869677408653ffff7f20f4ffffef@570d11797587b8d64facc3ca531ab888962c3aed859f5189d4236b4156dc07f8"18446744073709551677  -0400000091263532f4d8685a533c3b4f7408282c45a5468a51bfdce90ec2955178f504789e3526d9632756969af18f5df92fc8172446c021da413e912582566b3ecfecfdb2438653ffff7f20f2ffffef@44a129a72d16a06c236facd33ae87edfb206c160add1c479246cb2266b083a08 "18446744073709551679 +04000000f807dc56416b23d489519f85ed3a2c9688b81a53cac3ac4fd6b8877579110d5751fd2c2edeaf99211bfd80c2d1b8e457f1405fa3d519b00308fddc2ff0b82d96ff418653ffff7f20fcffffef@7788bfd0eb86984512ffc7d0845a291cddefc843aadb355dc53c33d722754fa7 "18446744073709551679  -04000000083a086b26b26c2479c4d1ad60c106b2df7ee83ad3ac6f236ca0162da729a1445e99336d57b3a69af3f85ad4bfa386f8ec844122ceb35c1350099432f274e8e637458653ffff7f20f2ffffef@5df4e4278214d7e23f5fcf3e55fd1c78d2f63444516b952a02066e7255187bf9!"18446744073709551681 +04000000a74f7522d7333cc55d35dbaa43c8efdd1c295a84d0c7ff12459886ebd0bf88772a22733f99b24948aaf3dd642d179f0c73b9cbded38ec5c648faa7be5e01395f05448653ffff7f20f2ffffef@5f0a28e6b0a821d0127347f6f116475220aed09cfb06bd565a01ba3325617953!"18446744073709551681  -04000000f97b1855726e06022a956b514434f6d2781cfd553ecf5f3fe2d7148227e4f45dc120255eed732d073c70807f9d1568c7601dd16e2a86d6b3f03eb11cd83c6039a2468653ffff7f20f3ffffef@690cace9023c434d5dbb9a1b729d688b4246ff41f9f8cb1ad7e35f2bece4595c""18446744073709551683 +040000005379612533ba015a56bd06fb9cd0ae20524716f1f6477312d021a8b0e6280a5f41cfe11dfa4d34f7dcdfb71bbf1f351cd4d3565d9759be0e9ef556758fdf257b6e458653ffff7f20f2ffffef@7335ae0f1b135a6d84a0e63694073403072efdb1fe1947205f8243fbd129cd2f""18446744073709551683  -040000005c59e4ec2b5fe3d71acbf8f941ff46428b689d721b9abb5d4d433c02e9ac0c6914ea9dc09fe70b769fbe19280f3e1d781a2de3732c5fd0efcd9133c0079cb04b6c488653ffff7f20f2ffffef@1f388b72c51842f010e845a159653f7bf32c2c8a16dd6fe81856f64c757d4443#"18446744073709551685 +040000002fcd29d1fb43825f204719feb1fd2e070334079436e6a0846d5a131b0fae3573b1e922762bb5eae53ee7d2c7def3e8e4944ca94651b2c9942bbc5be576a80cf372478653ffff7f20f4ffffef@4125eb17b643eb620b5d98b1b801b2219de718b1c65b63a46061f122170b8faf#"18446744073709551685  -0400000043447d754cf65618e86fdd168a2c2cf37b3f6559a145e810f04218c5728b381f64e6d62dba8e2623a2eb6a4702a4da4d89e48277915e494c53f42c50e125c635d8498653ffff7f20f4ffffef@616bf3fae61adffaf7d12ce3536ef91172d53c3b32fb414014d02b595de6e9be$"18446744073709551687 +04000000af8f0b1722f16160a4635bc6b118e79d21b201b8b1985d0b62eb43b617eb254186f3272bf7788eb34a01b74f106f377ac52a9cd2f4bebc15a742926e6ffa7b3711498653ffff7f20f2ffffef@65d97571d00ef947f193d8848ae94d203a364f762f4b7f3fbdaa5f2aeecdeda2$"18446744073709551687  -04000000bee9e65d592bd0144041fb323b3cd57211f96e53e32cd1f7fadf1ae6faf36b6129bedb3d381553128bf73268e9f738721a158ceaa0f77edc86ec15cb26d18674cd4b8653ffff7f20f3ffffef@2f710614d99b7b31e13504271986368aad576384c2ceb7c45b7046e403eecd4c%"18446744073709551689 +04000000a2edcdee2a5faabd3f7f4b2f764f363a204de98a84d893f147f90ed07175d965066ec9c5f7965368e79cb988b28841bc61e31d6bad66c32a06dd968fd3cd165b3b4b8653ffff7f2000000010@66ee9c0c8004099688426645e82892a23547c069731247ef9115ac991319ba2a%"18446744073709551689  -040000004ccdee03e446705bc4b7cec2846357ad8a368619270435e1317b9bd91406712f1ec889fbb9d4681374f3b8178e8843c3a66771bce72c32836284b8ce705ebae9f64d8653ffff7f20f3ffffef@6481e061676e9136c20ef72660b1e4264e8924fa06310a30001dcba7a7060283&"18446744073709551691 +040000002aba191399ac1591ef47127369c04735a29228e845664288960904800c9cee66d91f31d0e2c57b1da90a4cc230e1c422b1d3ad647eac38726a9fa005c37d6b9d854d8653ffff7f2001000000@70e1910e6d254841dd6bb2e2c03b7a50a2836d3bad0fbd2500d05ee0bd95713e&"18446744073709551691  -04000000830206a7a7cb1d00300a3106fa24894e26e4b16026f70ec236916e6761e081643d02173fd97c3779912580260f03e91297bc9a9e9072c8dc7362727a0a9db018b7508653ffff7f20f3ffffef@7d9843e058abfa07a36f17f9bf9d80e2831e44f7e28dd0fefd6915cb1867ae8c'"18446744073709551693 +040000003e7195bde05ed00025bd0fad3b6d83a2507a3bc0e2b26bdd4148256d0e91e1702e1153d58a19bcbef5f2bebde4863ab992fe8b25e99b9dff1a0f6d161dfe5a66c84f8653ffff7f20fdffff3f@29f345d32ecf2d3c055d339d6eed8308faac5f0caef4f4f21b836b0c70c3855a'"18446744073709551693  -040000008cae6718cb1569fdfed08de2f7441e83e2809dbff9176fa307faab58e043987d7f0260a4701a97320c2c7519848594816e16895b137b496f36c7dd84a9d007c93c538653ffff7f20f2ffffef@6efa0b1b9365d599145972e15cd85db1ed4a2ee792dd0cbb74f66133701e2bc0("18446744073709551695 +040000005a85c3700c6b831bf2f4f4ae0c5facfa0883ed6e9d335d053c2dcf2ed345f329aa4940a284c65ac418f71c56f3dd85ad3a2c1b7f3763667eb01ad5ff82a7448eec518653ffff7f2001000000@2d9bffbea8c4ff91388a7ae1ba75a9e40bc7a74746beaa00a0337c908923fe00("18446744073709551695  -04000000c02b1e703361f674bb0cdd92e72e4aedb15dd85ce172591499d565931b0bfa6ebac165f41f067a1f7f3e8ff61cd3fbb546b823482d626686956a31b0d5b11831ba548653ffff7f20f2ffffef@2874992f20d46957cd9baebe4752b670012b3f49028363c9935ef1f1e1afa6db)"18446744073709551697 +0400000000fe2389907c33a000aabe4647a7c70be4a975bae17a8a3891ffc4a8beff9b2d72b4ed962207ef659820075e10bfcc06b9909a2a8b7d81f9aeb652cd2e542bf157538653ffff7f20f3ffffef@64ab73e474610c64a5a618417dff3fa9e1509c21eb8ec3a996c9fc57a4b5e4b1)"18446744073709551697  -04000000dba6afe1f1f15e93c9638302493f2b0170b65247beae9bcd5769d4202f997428b77ab4536fe52d5e31e05e54993c50328ebd3779439a8c863987ca192a4ef54e62578653ffff7f20f6ffffef@3cca566aaaab7644d7323a87c2491e8486ac20a6703b594b84486d630309fee0*"18446744073709551699 +04000000b1e4b5a457fcc996a9c38eeb219c50e1a93fff7d4118a6a5640c6174e473ab64c5f4f965ffaf53013b22b6949a2957e60c4ccc5dc8e23f430fbcde49db3a52beec558653ffff7f20f2ffffef@4b817aacd7fb42d78dfb38c3fb41aed187343640e84fd85d7840c0a9f780891c*"18446744073709551699  -04000000e0fe0903636d48844b593b70a620ac86841e49c2873a32d74476abaa6a56ca3cb4a6a7695cd7e34fce643ef2e0c33b79f0abcac0eb3bfbf351e6d1f2c9368a07ab588653ffff7f20f2ffffef@1a387c6284f16540977e89b21d14774e380621ecf0b14ff2a0e58d01a9901b35+"18446744073709551701 +040000001c8980f7a9c040785dd84fe840363487d1ae41fbc338fb8dd742fbd7ac7a814b7680c2d6bd6091c5b0686d703bf440a23aba6cde9f5100b93906cb1814752d28fa568653ffff7f20f5ffffef@4a182b72a19b4b60df42893b23ba929af7835a755c6ea609ef52c33f22a1f50f+"18446744073709551701  -04000000351b90a9018de5a0f24fb1f0ec2106384e77141db2897e974065f184627c381a93c77ee33c46c0737b6934484d8fc4b9fd4e2f2d7dffbbbf5656e44115c7da20455b8653ffff7f20f3ffffef@767de6614417ce9578b0ddcdcd79bad9e30b809fd771c5d898f7f278c8330734,"18446744073709551703 +040000000ff5a1223fc352ef09a66e5c755a83f79a92ba233b8942df604b9ba1722b184ace3bd43fcd9a7ac826d9f00c20a7be0efa197aac6d831580d0614e9176a6a079b5588653ffff7f20f2ffffef@550dc2621de8dfd87d5b10d3c2d9c4e448d5de5aa42acf66ae837273a577bb6e,"18446744073709551703  -04000000340733c878f2f798d8c571d79f800be3d9ba79cdcdddb07895ce174461e67d76402d14b69d63c8b422c9062919f884405ee0caddc5dc591d17bd796a3b515ad0855c8653ffff7f20f2ffffef@59a28c5549ca085f587410f8c6f7a2f8b916ef41b69adeaf0c609fb82993c98d-"18446744073709551705 +040000006ebb77a5737283ae66cf2aa45aded548e4c4d9c2d3105b7dd8dfe81d62c20d5564431bf25270eb3ed8a30b8b6e05955fac7d54bbedaf59f7a70b3c2187811827d8598653ffff7f20f2ffffef@09f638963a0657d8517df35f9599988f2e9a527e6b54e65bbbc9f02aeff34b51-"18446744073709551705  -040000008dc99329b89f600cafde9ab641ef16b9f8a2f7c6f81074585f08ca49558ca259461a068214db00f83d3f452869ad3f16cd91c15e0d68d714ebdd7d4aca2c79a7975e8653ffff7f20f4ffffef@1957a363ae5401bdd96ff31c7224b26611300f682c767c4e37121cdd1d02b093."18446744073709551707 +04000000514bf3ef2af0c9bb5be6546b7e529a2e8f9899955ff37d51d857063a9638f609763f3fb024e87aa4d0ace9c3065aca458a32d7acf2ca98c02ecb7f33f9c29265fb5b8653ffff7f20f2ffffef@2a4e3b6c405a33c2d716045d12ed67e573cef9c5499fb9370734dbadd66b299c."18446744073709551707  -0400000093b0021ddd1c12374e7c762c680f301166b224721cf36fd9bd0154ae63a357193ce252af390ab65685e4c79e2729f2d42cc1a9376a50655ceeb65e78bc81aad1895f8653ffff7f20f3ffffef@0cdcd0f50795300c828711c1e16923ddfa196f9981ed6a02c531ab503d869a3d/"18446744073709551709 +040000009c296bd6addb340737b99f49c5f9ce73e567ed125d0416d7c2335a406c3b4e2a75ece6264cfbd42e1048abaea7df8d9f0bb553e9ca377f3a3a1b3fc1b3f36bb5975e8653ffff7f20f3ffffef@2a17e48548ad6581bdf7abec3927b9bb026a1fc6f4d45aa1e808e6294b767229/"18446744073709551709  -040000003d9a863d50ab31c5026aed81996f19fadd2369e1c11187820c309507f5d0dc0cb05387e303043554eac21082b2bcee25039ab8e2eea1d0bad0d2d01eed16a3ae9d608653ffff7f20f5ffffef@40e2767015136ebe61c2b4fa0c8c4253dbfbbc4c13c38274c5754880e99341da0"18446744073709551711 +040000002972764b29e608e8a15ad4f4c61f6a02bbb92739ecabf7bd8165ad4885e4172a1ea55c5b595e71a515cb6f70770b6061ca5ebc039baaaba61a2a23193fabb95a30618653ffff7f20f2ffffef@16f66ee729b7af8fb4a081779c0b645b862ab1b3d3df9c760234404ddb028cbc0"18446744073709551711  -04000000da4193e9804875c57482c3134cbcfbdb53428c0cfab4c261be6e13157076e2400ca73b819ce61e253bda35472a365733021d4f8f60a2e0ef907a97d5f0c25fe362628653ffff7f20f3ffffef@619c1866eba8304466710f6044ca52dff718933818d01d2a3b3ca9babbffd19b1"18446744073709551713 +04000000bc8c02db4d403402769cdfd3b3b12a865b640b9c7781a0b48fafb729e76ef616f9919d7fa10081077a806e5880a857ea42ebe09b810d9068a183ee1bb57cf38afd628653ffff7f20f3ffffef@20ee4f9c5ad56c59d2b5c032ce366b8edf5adefed9659d213b11bc698dede9821"18446744073709551713  -040000009bd1ffbbbaa93c3b2a1dd018389318f7df52ca44600f71664430a8eb66189c61b0b3fece993527dafaf712039cef847c5ccd0d4e511c293bcbe757ad47f07febd2638653ffff7f20f3ffffef@50751630883f022eb9eaeebb2791dfd8ad4237c6cbe9cc887e14a20542042fff2"18446744073709551715 +0400000082e9ed8d69bc113b219d65d9fede5adf8e6b36ce32c0b5d2596cd55a9c4fee2050bd84132b01c3bbcd334e07e79d80ca3a264b7f6f6f389ca565132b6a4111a0fb648653ffff7f20f2ffffef@749df4a7947fa9cd2b316019ce429e1cf13bd3629712840f99770ed4f0f3dbbb2"18446744073709551715  -04000000ff2f044205a2147e88cce9cbc63742add8df9127bbeeeab92e023f8830167550be26fb0978ae8f012554fbececd8a2138b77ccb028984cd94f1580de925958a69b658653ffff7f20f2ffffef@0b8e034507174da53de8e86ee1c3dcd89c3dce5e4ec02efc330eb469a6be1e933"18446744073709551717 +04000000bbdbf3f0d40e77990f84129762d33bf11c9e42ce1960312bcda97f94a7f49d74491bffdd7603af8b14ad8fb6a21f08c67964ba7c709b554b913113afc945ac8dba668653ffff7f2001000010@29ddb6fd17a2f5220a4ad6ea62622893339b3a543cbde22d9e77e5c0f56d6c023"18446744073709551717  -04000000931ebea669b40e33fc2ec04e5ece3d9cd8dcc3e16ee8e83da54d170745038e0b3e0ba1b8d16148e558fb593c8f22b1bf789d32efb2f4f7ecb31e443623634879be668653ffff7f20f2ffffef@142596010978fcef6090dad9deb8c46686af1169eb03e0f3bf292e274c76d91b4"18446744073709551719 +04000000026c6df5c0e5779e2de2bd3c543a9b3393286262ead64a0a22f5a217fdb6dd297cfcc9da7ae26860aedf32bfa5890b55cdb5bd0285c884d9f94d49916588f1b010688653ffff7f20f2ffffef@5a2920d92d9363bdbad3b39dba2288fd80ec7eba43ddbd2af20f54be09db0ea74"18446744073709551719  -040000001bd9764c272e29bff3e003eb6911af8666c4b8ded9da9060effc7809019625140471e58abd2319cae1db95950298cd6aedd3ac1306f3f78ef1e0190ce03e4869ce688653ffff7f20f2ffffef@09155e46462e4ccd56599bc4a050f2e0fcf502eb2e19a23c6dea28613f2c05d45"18446744073709551721 +04000000a70edb09be540ff22abddd43ba7eec80fd8822ba9db3d3babd63932dd920295a9563675d4d3aa56b8b00e5610d127ac1d98b61102c143a41ba27cbcbcc99e2d4446a8653ffff7f2001000010@1a3b334769c8face309d91c9fa926ce9699c902d255718819f93196af08575325"18446744073709551721  -04000000d4052c3f6128ea6d3ca2192eeb02f5fce0f250a0c49b5956cd4c2e46465e1509412cfb8fb8207c616189f7ef66cda0cdb8377a591b91ca022188e3027c15091dd16a8653ffff7f20f3ffffef@2961426251dd4584a6b45c0d69f64f0db5d485b8e7feb66275af5d31353f26226"18446744073709551723 +04000000327585f06a19939f811857252d909c69e96c92fac9919d30cefac86947333b1ac8c22ffaf993e24d8952a25ac58753fe459ddb9b6bd0241a464bcadd1f9136bf0b6c8653ffff7f2001000000@7bba7fef63d80f74b9900e20cac51185741658d98b4dc69d4615809f22fe24a26"18446744073709551723  -0400000022263f35315daf7562b6fee7b885d4b50d4ff6690d5cb4a68445dd5162426129603fbc6a31caf970f11824b1fbbaf10b6dcc1492f7e4f6963d3a6aa6a0e87644166c8653ffff7f20f4ffffef@0af02619771187242484461c16a5f33f2edd478f1c361237adee6e26cfc326617"18446744073709551725 +04000000a224fe229f8015469dc64d8bd95816748511c5ca200e90b9740fd863ef7fba7b88334b5cf19767d22ce981dab22811877f35dc611e6700427f9d1a06b00cf20b806e8653ffff7f20f3ffffef@079c772905b75f2c1ac39ba4ad1c7584e576fef965f1d127ad3f3c7389c4823f7"18446744073709551725  -040000006126c3cf266eeead3712361c8f47dd2e3ff3a5161c468424248711771926f00a69d4a092744bb5995556b4992a6914bece32ca9a0760b801b125283f407740a1d66d8653ffff7f20f2ffffef@6448c7adc853f2172b0b902b838ebc47c5a94d7d740d2a51192d17ca57b53ef28"18446744073709551727 +040000003f82c489733c3fad27d1f165f9fe76e584751cada49bc31a2c5fb70529779c076f57cbd38aa3f78211200d161839498298a8b864d96555a2e63e16f957d8245cd46f8653ffff7f20f3ffffef@2aa61f69a2aebee57ff1ffcebb887a6a24a5a72f350ed55851be4153253950ac8"18446744073709551727  -04000000f23eb557ca172d19512a0d747d4da9c547bc8e832b900b2b17f253c8adc74864756ce7bb88ca615e94d73d09c1298e28ea01601a188ee37cc3c4778cd8ed0ef9386f8653ffff7f20f3ffffef@6f814527348222ef7f439512a23eb8bc1de70a9d9536c47176aa89df1fb320e39"18446744073709551729 +04000000ac5039255341be5158d50e352fa7a5246a7a88bbcefff17fe5beaea2691fa62a49374965f06f29a69109c973d81579606209495b9dfcb78484d99d319c987f9463718653ffff7f20f2ffffef@45001f843395d2c67d466da051aa94ac37e5523622ba4f717978b265e19cd66b9"18446744073709551729  -04000000e320b31fdf89aa7671c436959d0ae71dbcb83ea21295437fef2282342745816fe3dbd3419bcfe609ffcfd89b9030bfaa25d61da0582b9597cfe70ec0a52a281864708653ffff7f20f3ffffef@035d0885fab1ebd72bb9649a93e6b45728643b162f5c5a51803f4510ab75034a:"18446744073709551731 +040000006bd69ce165b27879714fba223652e537ac94aa51a06d467dc6d29533841f004567ee10d6034ba17ea81d05c759e7d9e7e2bdd707ea69d3e2e7fe38e90eaa7857f1738653ffff7f20f2ffffef@3f0bce316a502c24e5a60bd63df87aec59c5bb33f604468b1e94bf864bf8ede8:"18446744073709551731  -040000004a0375ab10453f80515a5c2f163b642857b4e6939a64b92bd7ebb1fa85085d03b5316daeb4962feb3948bfc97fc7f4e3c7c0ec3e655e015de76d621c96fe0fbbea728653ffff7f20f2ffffef@5a39798bf96347f77bf290211679babe968954ec4868af6db4c8ad11911af75d;"18446744073709551733 +04000000e8edf84b86bf941e8b4604f633bbc559ec7af83dd60ba6e5242c506a31ce0b3f37bcdcfee3700d094da52dfc8ec57eabcd5256c9a07409557c9269b67ec7d53266768653ffff7f20faffff6f@2a5cdbea636c84b4564fe1fcbc24c656b9096a24fd26b9a3db0badacec296781;"18446744073709551733  -040000005df71a9111adc8b46daf6848ec548996beba79162190f27bf74763f98b79395ab8001a41dc1f2b33ca6eebd5bbd65af8cb90bbbeea83e9e9b28640e61527959619758653ffff7f20f3ffffef@3a42219ebd22ebf46aebbf0881ca17c3cfe5037b7a342ae574ba4f949af6e293<"18446744073709551735 +04000000816729ecacad0bdba3b926fd246a09b956c624bcfce14f56b4846c63eadb5c2a7c3c5d3f2447a4d47b39cd7b808299d973d91fcd54d6cca4b31efdcc8aad2656b8788653ffff7f2001000000@567d8b1c9e4f14782df911d91f70a4a3f7e5931ea3c1c1c72c771f8766f2ed15<"18446744073709551735  -0400000093e2f69a944fba74e52a347a7b03e5cfc317ca8108bfeb6af4eb22bd9e21423aac5799ba2ab864a0642df058a38310aa447177c830fe0518d7de2ebac3ff30fb71778653ffff7f20f2ffffef@23df19e1b99a1aaaf731ba0dc067092e297beff8f0422bb6622d8c43ef218d1d="18446744073709551737 +0400000015edf266871f772cc7c1c1a31e93e5f7a3a4701fd911f92d78144f9e1c8b7d560c2e41308c2bcc5933d08c9577ab3c2ac98268fe38fe338fc7d2f0f9516e6de7cf798653ffff7f2001000000@202e30476db278317e68eb4c8d914b937f2d83e114c1af111d74218270e0a8a9="18446744073709551737  -040000001d8d21ef438c2d62b62b42f0f8ef7b292e0967c00dba31f7aa1a9ab9e119df231f5a8b265d70c9a371ba33f48fabd86059c442c99cc55f05a3a46a4e2854957081788653ffff7f20f6ffffef@3aa5af095aa1eab915be53ef3339c73d4822f6716750d5c68f34dcc1f3f82fea>"18446744073709551739 +04000000a9a8e0708221741d11afc114e1832d7f934b918d4ceb687e3178b26d47302e200fe38eb72e49ac4399f35754af6cf96c96bd23650f73461d7918c6b4b2097263887c8653ffff7f20f3ffffef@5cc09155de87577257d689d6827e0621ae8117427aee5e267099915a41134081>"18446744073709551739  -04000000ea2ff8f3c1dc348fc6d5506771f622483dc73933ef53be15b9eaa15a09afa53a7b82d9ee8bcfa4981ac4cc11b9862fd0384d2ab1e4d71e15d1c3e505de8674563b7b8653ffff7f20f3ffffef@35c6a28641e05109a8c0509b4378145c5ec3b8df8798a6b50a430130288e21ed?"18446744073709551741 +04000000814013415a919970265eee7a421781ae21067e82d689d657725787de5591c05cda61239512c08452769312b9de37125888e58b734a942d8697e141f5ebb976aba17d8653ffff7f2002000000@0a621b2a62b5a6d397b0bb05424edd7ac046c9efac615427c9954692b4ce2f09?"18446744073709551741  -04000000ed218e283001430ab5a69887dfb8c35e5c1478439b50c0a80951e04186a2c6350855d68214b840b61599d5bff41b3b12b8ad99214127ca2a6449ee94d034635fdd7d8653ffff7f20f2ffffef@1f6f0959e3f79b959b5fab710e4055c9420249b66685cfa006763f4769d7b93f@"18446744073709551743 +04000000092fceb4924695c9275461acefc946c07add4e4205bbb097d3a6b5622a1b620a42a5624054dec2cc6f95e6340dbc812ac0e8d1f5a215be02a5bd0a5921afd6420b808653ffff7f20f5ffffef@16ab73d6717336aaa74a3758fb82ba17f15d67c037d10ca4abd1bf95be9d3049@"18446744073709551743  -040000003fb9d769473f7606a0cf8566b6490242c955400e71ab5f9b959bf7e359096f1fdd8046e4868372fe8e52f7fe6fa9ec7ec8b8c3f12b12144e3cf041ee34b027f1037f8653ffff7f20f3ffffef@5596899732b5eab84f6764e0b8fe594b644339f81ddaccfc7a7d707c43843472A"18446744073709551745 +0400000049309dbe95bfd1aba40cd137c0675df117ba82fb58374aa7aa367371d673ab167445e1082081c7881b513d8949417d2d44abb102ac6443a5199526bdf34d6bf620828653ffff7f20f3ffffef@0528f12a821fff1efad9e6fdebb8ee9cd8268367a23822e363f017db2027f79cA"18446744073709551745  -04000000723484437c707d7afcccda1df83943644b59feb8e064674fb8eab53297899655cdd991769b96c79ab3ede7b1f0afdb7135d2d5b015c9f8f6288cbe41879c731a49808653ffff7f20f4ffffef@5340917246436385dcc9afa2fabd7b5b91e1757970dc1ef7ad0648b895a75aa7B"18446744073709551747 +040000009cf72720db17f063e32238a2678326d89ceeb8ebfde6d9fa1eff1f822af128050930cb48677024273beab5aad0e0d260492c40c256600d971aef8d7efd806928c9848653ffff7f20f3ffffef@446a54c5cc73834a10a20fd11eb77bd33e781a5b5b6f3fe7549a52bd993b8d3bB"18446744073709551747  -04000000a75aa795b84806adf71edc707975e1915b7bbdfaa2afc9dc85634346729140530497ebf8da9f3143ed328a47313632fa82b0aee0c767696e25f78d22962e7e42f8818653ffff7f20f2ffffef@4d639c7abdbcdb7fe4ede5149b6bec300976d6d5ae07182bb77a486e2d6d2b78C"18446744073709551749 +040000003b8d3b99bd529a54e73f6f5b5b1a783ed37bb71ed10fa2104a8373ccc5546a44dc563fd6f095f0e33a0ea2b2ac70018862d1bf6a776fb989b48aa71937ee49ba27878653ffff7f20f2ffffef@61324d26c6ee940855207d437ff9a19efac3f139eadc3f6e8e7735f651b60354C"18446744073709551749  -04000000782b6d2d6e487ab72b1807aed5d6760930ec6b9b14e5ede47fdbbcbd7a9c634dab95647f3e691895008a05e71d297f8bd5a5d7251bc4c727bcb9b715af7aff7a60838653ffff7f20f2ffffef@5eeda3b2fd1caf6257593e8ada43d9a6cd13f91f5eec42ebdd30088f3393f182D"18446744073709551751 +040000005403b651f635778e6e3fdcea39f1c3fa9ea1f97f437d20550894eec6264d3261f6ece0f30edc354198de8469a36f80ba945207cbbd5ddb788f256da90bbf7460ae888653ffff7f20f3ffffef@00d732350d1071244df2bd3bce35f525f5b6b4d00ca2393fa1f19d9597e806c7D"18446744073709551751  -0400000082f193338f0830ddeb42ec5e1ff913cda6d943da8a3e595762af1cfdb2a3ed5efc0e269b3d331d397eb8f5a459467c4ac225c87f16def534f600fc9c6b2985ad34858653ffff7f20f2ffffef@1339ce289ec433efaa99ea190c3c3383dd9a2ba473ac82a9139b448f4ca72dd9E"18446744073709551753 +04000000c706e897959df1a13f39a20cd0b4b6f525f535ce3bbdf24d2471100d3532d700636186c2d86d2afe130cab759d9ab8a0a7ee65b2e84b3bc808af2a514bfe1ee5778b8653ffff7f20fdffff3f@4658b9462a6bc398c9f8a069ce98574d68b728a75599932fca196ceb6f92cf10E"18446744073709551753  -04000000d92da74c8f449b13a982ac73a42b9add83333c0c19ea99aaef33c49e28ce3913a09e85b26229c4840752c156c93d33efcfe4bc9b41d6e615d62a79c40b105bc925868653ffff7f20f3ffffef@45fe6ee5235c73e2c56a903e036e16b7d2ed7b77441b036303e6774d3a943dd6F"18446744073709551755 +0400000010cf926feb6c19ca2f939955a728b7684d5798ce69a0f8c998c36b2a46b95846e92d14d90bd1d8c7396ddb157d589cd896ea64cea248186ed5c2bd013dbc629f248e8653ffff7f20f4ffffef@05227990ddb84fe3aad725ee4f321b2eda5503021f7709ab9937f4e0c24618dfF"18446744073709551755  -04000000d63d943a4d77e60363031b44777bedd2b7166e033e906ac5e2735c23e56efe4542e4fbce401a8e02119e9e4eb2f22fa1862609e82abe5e4d02d56621da941f1e47878653ffff7f20f3ffffef@723dc5da05ec79b69dda6f58e169877c656eee07deb53229ea35c67a1d0f9523G"18446744073709551757 +04000000df1846c2e0f43799ab09771f020355da2e1b324fee25d7aae34fb8dd90792205e98a7f65c71cc778a7ca6418c6dae94db899f933e90e955c87134dc5883ddf2e568f8653ffff7f20f2ffffef@6da75f57cfb85ff0a81c28f280d740b6938bf532870895ca75f156fd9bcbd0deG"18446744073709551757  -0400000023950f1d7ac635ea2932b5de07ee6e657c8769e1586fda9db679ec05dac53d727869db15b5a76f7e9afdaa51b6d505f7f41eeb602e6076d2eeb35702a13b153ecb888653ffff7f20f3ffffef@2d10b1657bbe1fe8a41928b5b5b06488cb1dc7ca21e354758255b757b1ab0307H"18446744073709551759 +04000000ded0cb9bfd56f175ca95088732f58b93b640d780f2281ca8f05fb8cf575fa76d94f51f0b2f7b5fcea7fcc2efa8ea5ded48df9e00cfb0ca3e00d33694fdd13322c0918653ffff7f20f2ffffef@21b47192f4fb71787353208c26c3f5938cd059a2e77fef25b7639f51a06bb8ecH"18446744073709551759  -040000000703abb157b755827554e321cac71dcb8864b0b5b52819a4e81fbe7b65b1102d68f9aa6d831eee1bcd1aeea8228e67fc4e2381cd03cfe5c566a64b7e5c09fd80228a8653ffff7f20f3ffffef@7941eb3ed4f1ba30e35e79daee55b7c01ce02ea435773abfe62c7bb636e0133cI"18446744073709551761 +04000000ecb86ba0519f63b725ef7fe7a259d08c93f5c3268c2053737871fbf49271b42145278e05dda82b1d18faa6af47885dffd2bac18ca8a551e6aca493b4fc9859d7bf928653ffff7f20f3ffffef@46e3e5f259f71cc0d0b8d90fe647ceadddcebdd6937a941c20e6f705280063fcI"18446744073709551761  -040000003c13e036b67b2ce6bf3a7735a42ee01cc0b755eeda795ee330baf1d43eeb4179a75ecc72e96d94ae28d2a2fa0c7569cdaa288afe0c93f9cefdcf08258e35f017b98c8653ffff7f20f3ffffef@05bd65a1bd8754280c1fa334ab319f2286230c6b4acddbec71f750bb17bed16eJ"18446744073709551763 +04000000fc63002805f7e6201c947a93d6bdceddadce47e60fd9b8d0c01cf759f2e5e34647641eaffdf485885c844e4bee3c173a35c590cc0a573660df376025a8cffb1a85948653ffff7f20f3ffffef@43311d33ad402b7f0a70d17ed36e3d4bd8d632e46bc1a9717ab37749f5085f2cJ"18446744073709551763  -040000006ed1be17bb50f771ecdbcd4a6b0c2386229f31ab34a31f0c285487bda165bd059e2e326fb29cf9e757a104502b1bd3762c662d197b4f1d80d5c289f3fe6e1c68908e8653ffff7f20f2ffffef@59d164242a5730d03c4f426254918987c4fc220f8bbb1de142f8b2ffb5b577a0K"18446744073709551765 +040000002c5f08f54977b37a71a9c16be432d6d84b3d6ed37ed1700a7f2b40ad331d31437c823f3087f77dee8d8699d13b569423a1ada711cec96bb6c8329f0d757322ee9a968653ffff7f2000000010@12425b063033dcb15f944631b4ca850b66f914e516b2b16fe745ce121a76f7aaK"18446744073709551765  -04000000a077b5b5ffb2f842e11dbb8b0f22fcc48789915462424f3cd030572a2464d159303e66fdee6f326d850178a98d254c3e81e5e1dbcbaac965c52eecdce844593a34908653ffff7f20f5ffffef@34ecf326e590ca68a67dd2dd00752d83d13c836dfa16529aeb023d1b814f6401L"18446744073709551767 +04000000aaf7761a12ce45e76fb1b216e514f9660b85cab43146945fb1dc3330065b42124eeb9192ae7e54b918697d2ad865727cfc105d5ea29674df9261ca3ae69df4f7ca978653ffff7f20f2ffffef@77667b5ee48fce3bb0201c8749fa0fda2d2ac014bb2032870d189b613bd37742L"18446744073709551767  -0400000001644f811b3d02eb9a5216fa6d833cd1832d7500ddd27da668ca90e526f3ec34fe5a08885c1f99d7c52590101c43c0b7cd5415e7759509c7ece9c0dcbbfd22e99d928653ffff7f20f2ffffef@7dc5e51152dde1396c5d2f7cdb2aefa64e481f945a4d5af001170bc1d83f60caM"18446744073709551769 +040000004277d33b619b180d873220bb14c02a2dda0ffa49871c20b03bce8fe45e7b667793a8ce0a2712b53d643f818fda39f57ef37643de7d6746d489b1a4b1722cc2d725998653ffff7f20f2ffffef@6acc3728e142b3df9abdb687d26c23951d185703b72e43067d85b88b234b6f11M"18446744073709551769  -04000000ca603fd8c10b1701f05a4d5a941f484ea6ef2adb7c2f5d6c39e1dd5211e5c57d49728d9c810e164e89bf2d700d5a200ba3020f01edfc13f55e5a99fa407bbadb05958653ffff7f20f3ffffef@22d3d76e5dc9c154892b8ceb40c0550638a81a8ec8ff84c0b8b691c3d8b748cdN"18446744073709551771 +04000000116f4b238bb8857d06432eb70357181d95236cd287b6bd9adfb342e12837cc6a3438e5ab1cefc02fab8d8cc51508760984817db859f2feddb69ed63792ee1d9b779a8653ffff7f20f2ffffef@70054581a967e2c623a6b9c290192cdc927e4b914cd39e5706d6388e20fe44c5N"18446744073709551771  -04000000cd48b7d8c391b6b8c084ffc88e1aa8380655c040eb8c2b8954c1c95d6ed7d32287f52e30328e5387f3a5f5bbf8dac6328a32694976ded4991349839c6b4605c0fe968653ffff7f20f3ffffef@17b42def0274bd7f83fae1429088cdd57f341e040ffe356f29bb057ed98db33fO"18446744073709551773 +04000000c544fe208e38d606579ed34c914b7e92dc2c1990c2b9a623c6e267a981450570c0a2114c4db9b4f8ce25551943c5d2b861e1b621ab71bd63b4bc0be75d7f50be9a9b8653ffff7f20f4ffffef@657b3f363b8009e2a8487cb9935694b44023ffcb5d604bdf17854844bec72a44O"18446744073709551773  -040000003fb38dd97e05bb296f35fe0f041e347fd5cd889042e1fa837fbd7402ef2db417848b8f8e4d07111610c08e7f8937e05006f2bf05ba1ad39eb84b07a4ba13c345a0988653ffff7f20f3ffffef@7cbe1fe72833b75a7ae63414a283cdfe977944d62e779e9531ce49d9d8129608P"18446744073709551775 +04000000442ac7be44488517df4b605dcbff2340b4945693b97c48a8e209803b363f7b65461e85dddbfe119026926d82ff7199e79588c3750b7cd870f9e2b6d7432e9c54e09d8653ffff7f20f2ffffef@6dd4e62fd527bb558a1c8f267e9bd76780be4caee7e67c183ed35b80c1d50be5P"18446744073709551775  -04000000089612d8d949ce31959e772ed6447997fecd83a21434e67a5ab73328e71fbe7cd9ef2c3ab5a924391c76188c81e075c94fcb10a4bbe88b9ee6ed25faad7f2ebb0b9a8653ffff7f20f6ffffef@6d90807831c1e9d8c1f832701012432a5044b836b209d84cf2ba8b5a6b56cd3aQ"18446744073709551777 +04000000e50bd5c1805bd33e187ce6e7ae4cbe8067d79b7e268f1c8a55bb27d52fe6d46d78062ed4258bab39ff48094db12ff93bbb6cfd615a8f15563d11d7e8068d15c8379f8653ffff7f20f4ffffef@4b3f8f3809ed0d78958a7592021f222182ea522b4bea435721ed44205497f0deQ"18446744073709551777  -040000003acd566b5a8bbaf24cd809b236b844502a4312107032f8c1d8e9c1317880906de3bc57da2255f9689576f877ee3d43974a7b8601a4ec5a39b195c5e4d0a17ca1619b8653ffff7f20f2ffffef@52d2f6dffc588e0f807bf08ea75c78a1298fc7564b1c516bfde2de091df1a9adR"18446744073709551779 +04000000def097542044ed215743ea4b2b52ea8221221f0292758a95780ded09388f3f4b29a8581b6956e1a77c0a8f7ef8074f1c31326643ca2f4b1899e9813ffe3acfcd5ba08653ffff7f20f2ffffef@5feffa69af65812a203e7c0c5983996cab4588c6f82a248a9c8ea6e945585b09R"18446744073709551779  -04000000ada9f11d09dee2fd6b511c4b56c78f29a1785ca78ef07b800f8e58fcdff6d25252a092d595a371c13b96d280acb86cc0d472a440b191b6e2eb1e02a91ab2d155cb9d8653ffff7f20f2ffffef@27cdf4a888db3958adf54464253f1567fa52cda2039824e6e401ad87161b3bffS"18446744073709551781 +04000000095b5845e9a68e9c8a242af8c68845ab6c9983590c7c3e202a8165af69faef5fc2533026b6345ae443ae31f5eb779c346bc00e62b3eddda29df6dd5b0e7338e773a18653ffff7f20f4ffffef@5259522c268d7c3e3f50e8eaaba086214bd0cd460a0440d69d7d58ad6b3d2bd9S"18446744073709551781  -04000000ff3b1b1687ad01e4e6249803a2cd52fa67153f256444f5ad5839db88a8f4cd27105d03051851a46130dbeed86c5dfeb983054f0538e94d5c62bc926a6d1f2289259f8653ffff7f20f2ffffef@631f12b5cdf703e8987eb5f3d06dda9e83f32bc5b5b42396063d6d8a9b1b96feT"18446744073709551783 +04000000d92b3d6bad587d9dd640040a46cdd04b2186a0abeae8503f3e7c8d262c525952e6148d35c46677c72c6e02f8c460859abec5aab540ff7005f514dff60b317eed75a28653ffff7f20f2ffffef@4f823e81f7e30010dbd9d1fe833136f0eaef768d5d00f338a541f70160808fbfT"18446744073709551783  -04000000fe961b9b8a6d3d069623b4b5c52bf3839eda6dd0f3b57e98e803f7cdb5121f638bc7fa39013be1ad67256b8fd2e85f59e4df5f6ed234edd0689d19223d5ba4e885a08653ffff7f20f2ffffef@39f693fea1045bdaf62b0a388a53ed8bb993efc5dbd13f745d04001174cb3b5dU"18446744073709551785 +04000000bf8f806001f741a538f3005d8d76efeaf0363183fed1d9db1000e3f7813e824ff0c849a0a8e60811382f093511ad34e62bb7a7ee654043d9fa3ef21bb07ca58bb9a48653ffff7f20f2ffffef@70a89297785211673f8fad783cc9663b19c86a89393f48bb3452eb94e8941b1aU"18446744073709551785  -040000005d3bcb741100045d743fd1dbc5ef93b98bed538a380a2bf6da5b04a1fe93f639ff2f2a96a04ee0d2aad172df3845e4dab5a35fc3f9feb93f2d4a04402bebef302ba28653ffff7f20f3ffffef@330cc2d454657cc098f3fc7ce0662acf7f6325064c0338040a0fb1c6d2e0e327V"18446744073709551787 +040000001a1b94e894eb5234bb483f39896ac8193b66c93c78ad8f3f671152789792a870eda3b4dcf7522746352e23eccfbf4c2dedb58528b3724e387ffe99bd6e748cefaca68653ffff7f2000000010@36a156bc92436c42dd084aaac8be85d26bbb4a227e2ae287008587580123a2a1V"18446744073709551787  -0400000027e3e0d2c6b10f0a0438034c0625637fcf2a66e07cfcf398c07c6554d4c20c336aa374c4b2649a6ee06fffd97f34dd86d98f5c271c54a5eb3d87fd85937f76ab99a48653ffff7f20f4ffffef@62bb5f4cb5d1bed9669bd23b4a9070f1e8eee440c4289b5a791c144c550a9e03W"18446744073709551789 +04000000a1a223015887850087e22a7e224abb6bd285bec8aa4a08dd426c4392bc56a136fdc4cf590e07e00a9ea089fd1f463013da280e52055017b39488aad1868e8fe0cda88653ffff7f2003000000@64bbafbce0d4470c74067d574440a0d3f6d30bb29f425d27ae4bdd23de800d57W"18446744073709551789  -04000000039e0a554c141c795a9b28c440e4eee8f170904a3bd29b66d9bed1b54c5fbb6228d1f05c8c706c61c8794340b4b819b98395a9a6914820152ddb42b283c2101925a68653ffff7f20f2ffffef@3c103da22442cb773b17159bdc33f5cf6634da5e44094446c38d56acba6525ffX"18446744073709551791 +04000000570d80de23dd4bae275d429fb20bd3f6d3a04044577d06740c47d4e0bcafbb64c6db6206a0c98cf7fbd777b773e66b8d0bcc212f48c1de78c2ad0d25e3a63cf40daa8653ffff7f20f2ffffef@39bb32fe68dac043dceee07ac02006c2bbaaaca1878f1d8f77697cdc8586d7ceX"18446744073709551791  -04000000ff2565baac568dc3464409445eda3466cff533dc9b15173b77cb4224a23d103c07600be1825ac9886e2aee890a31a2392a04cab6c016ceb9dc61150c8fb875162ca88653ffff7f20f2ffffef@11483a4cdc41d5bd3a90ecda1555eff03038958687f6608c0c13115a04dfe72fY"18446744073709551793 +04000000ced78685dc7c69778f1d8f87a1acaabbc20620c07ae0eedc43c0da68fe32bb391588da41643a4faa6f36a3a42e768226eac8367865e26047fad243cbbf7b321a5bab8653ffff7f20f2ffffef@46b111fd9f468358ae5466ec4424e209556786d174455b749bb8e5f76436d983Y"18446744073709551793  -040000002fe7df045a11130c8c60f68786953830f0ef5515daec903abdd541dc4c3a4811eb6f19462399bbd702e7daad9e89625913faffe1f67abfea47115b5fd6a559e452aa8653ffff7f20f2ffffef@20789617221a2fe9f314c37c8da76013a201d261a462f3b18f7992a9b9027453Z"18446744073709551795 +0400000083d93664f7e5b89b745b4574d186675509e22444ec6654ae5883469ffd11b1466b2f65a0f3d9c8d1b4e75423c1e36dc7842eb043532cdbca55f5ee524479cb1b6dac8653ffff7f20f3ffffef@4c4946a8a0617992b7912b7caa69d4444ac0b46bee93ba5a41e810dcfdd1ebd2Z"18446744073709551795  -04000000537402b9a992798fb1f362a461d201a21360a78d7cc314f3e92f1a2217967820363e29dc4392f7b31f3762b6bb78f09ed8b817d6d0f675e3d8ebc0b110eb595e0eac8653ffff7f20f4ffffef@4a8b42ba468553c0f790c361edad8c7a5cbc5ae0fa9d37f884f6423d8d11b33a["18446744073709551797 +04000000d2ebd1fddc10e8415aba93ee6bb4c04a44d469aa7c2b91b7927961a0a846494cedd4a158c885b782c7916231ea9275c7651e441358a8a082dd7beac455d25b4f2faf8653ffff7f20f3ffffef@59cb3e62e57a40b46a1429bdb5b0f3b522fc1ad7971b85a6851d5de53ffa0bac["18446744073709551797  -040000003ab3118d3d42f684f8379dfae05abc5c7a8caded61c390f7c0538546ba428b4ad2d89a53afc88182ecff42adcd3ddbb5e642aab1f597e49ab5a85d8fdaf1eee07dad8653ffff7f20f3ffffef@6741b42973c2b10e8a242ff9539f092adbc6aa22946b01ea1848690b25bcb871\"18446744073709551799 +04000000ac0bfa3fe55d1d85a6851b97d71afc22b5f3b0b5bd29146ab4407ae5623ecb599b2ccafc639cb76d7e3046346db3a03b1d73e659b617d8f5474524b146cb9e559cb18653ffff7f20fbffff5f@2556971c014e9df5ad3281b42b8d33b6a18ac6d18098405d8511fdd3cead7cd2\"18446744073709551799  -0400000071b8bc250b694818ea016b9422aac6db2a099f53f92f248a0eb1c27329b44167b7caebf33dd194557d0114fd14d0c3272df9846d3bcab42b5c2dc5724c372df198af8653ffff7f20f2ffffef@4c0bec76cb969d0f6f8cbf473e8e2b36d4e12ac9e684c4e7e39843c56bfd0517]"18446744073709551801 +04000000d27cadced3fd11855d409880d1c68aa1b6338d2bb48132adf59d4e011c975625092aa3d54b3c66decd4bd2d0f07bbe99945c84721873414339b0bb470e774973e6b38653ffff7f2001000000@02438e2f993c2dc0bfa5feaa0f7a36e75d4a2299190d277b514d5190206b48aa]"18446744073709551801  -040000001705fd6bc54398e3e7c484e6c92ae1d4362b8e3e47bf8c6f0f9d96cb76ec0b4cc7479bae903d382f8cc244ac474b5cc92739c3739c835000d10c48ac46d9efd866b28653ffff7f20f2ffffef@27159c12df90158d4b2e75e564b87b4725f2976163523a43ab821781ab6fd3b7^"18446744073709551803 +04000000aa486b2090514d517b270d1999224a5de7367a0faafea5bfc02d3c992f8e4302f1fb0cf9845478fe49ba2fc40a3f07ee0e0824a758a2242b0ed2cec9c204f49964b68653ffff7f20f3ffffef@0ea707dacbbb6e3f861174fa912357f7388e6f94114b25949860d4885f310cb5^"18446744073709551803  -04000000b7d36fab811782ab433a52636197f225477bb864e5752e4b8d1590df129c1527fd0fda232cc581a844f615eb300e351b3c32429a86878cf500050daf20aa38f8f2b48653ffff7f20f2ffffef@4cf86e28d319cc8c47904a8f1baceb00fe3f2409a8d1d3e7576ffa97ad296132_"18446744073709551805 +04000000b50c315f88d4609894254b11946f8e38f7572391fa7411863f6ebbcbda07a70ef903636e742fe0048c7c1bb126e9bf7d27a51ef5b644cea565f091296616ad2ef9b88653ffff7f20f4ffffef@62200ffb60c14a0b4d2c46daa81a4801e130c548cb0973c9906985efef99106b_"18446744073709551805  -04000000326129ad97fa6f57e7d3d1a809243ffe00ebac1b8f4a90478ccc19d3286ef84ce9d95d53bc5cf472901e6ca4c6abcad24802673a77c2b37bf6436c63ad3e355e4db68653ffff7f20f3ffffef@2ea82a01339384f456d64ebdfba085f2deb91a5ba677448c5ab70755c3c65f90`"18446744073709551807 +040000006b1099efef856990c97309cb48c530e101481aa8da462c4d0b4ac160fb0f2062c6b2b5a51d8738d29bef3cf6028bfd4cf63c8cf4cf9460c77a5ca489b435063e34bb8653ffff7f20ffffff3f@0849d4a49d12a5c8308e48427ce54ebabb1c82e1c773e02983c279e5f7abe918`"18446744073709551807  -04000000905fc6c35507b75a8c4477a65b1ab9def285a0fbbd4ed656f4849333012aa82ee8393f55563ff363bb542f6b1508fec2d3655575df0e0b4671719f388c8071ac19b98653ffff7f20f2ffffef@4666abe4d0b3c2c493bd6753bbe1b62b809f3a95b6cfd88be572a3996b2eac3aa"18446744073709551809 +0400000018e9abf7e579c28329e073c7e1821cbbba4ee57c42488e30c8a5129da4d44908ba0c88dbc834ed873957571ef037d61ca03818852bd4f982580bb8d4afa994475fbc8653ffff7f20f2ffffef@53d6465ce800dcd12893fe7eb3549f988bee635999a7e61176a3fce95f87d3bea"18446744073709551809  -040000003aac2e6b99a372e58bd8cfb6953a9f802bb6e1bb5367bd93c4c2b3d0e4ab6646ffc7adf164b5b0d1eea34785eb400b5de315510a2814f90c67a72cb3a944c926f1ba8653ffff7f20f4ffffef@5ed7acbe8fc9681dbdff77236a1a237c14e3d8c8ce01b7c1383cf445e4b7cd98b"18446744073709551811 +04000000bed3875fe9fca37611e6a7995963ee8b989f54b37efe9328d1dc00e85c46d6533f0f68af9b1c3de1c041a86d8c00611f031588f111b40dc825e8f1a54d4c719d7dbe8653ffff7f20f3ffffef@14c96418fa941e44e3d667fc24f4f2b565f2343441d6737dc9f9a77b1e5af6b2b"18446744073709551811  -0400000098cdb7e445f43c38c1b701cec8d8e3147c231a6a2377ffbd1d68c98fbeacd75e53218b79b8bfec551ec15827bbe35b34bfc11f2241824c67de1354945778733845bc8653ffff7f20f4ffffef@3649ed8925cb166b629d90be00429c54c57f595b39f1cbb0047254dde30c832fc"18446744073709551813 +04000000b2f65a1e7ba7f9c97d73d6413434f265b5f2f424fc67d6e3441e94fa1864c91487227818fd156d97c197d13e8d2d0bc446a1b42000e08b88c806e0c72d2cf0d5c6c08653ffff7f20f3ffffef@7b148bb38474844b34c81adbf776dd78bf6e14795447e4356b58d287c5b740f4c"18446744073709551813  -040000002f830ce3dd547204b0cbf1395b597fc5549c4200be909d626b16cb2589ed49369a5fe3fce7f45fffd5f8ad40108b2a76312ac168d10686d643fd56e37e72446910bf8653ffff7f20f2ffffef@4575f28d2c5ca5272162ad27d691925fdb441d7a205946cb27549fb750e3c931d"18446744073709551815 \ No newline at end of file +04000000f440b7c587d2586b35e4475479146ebf78dd76f7db1ac8344b847484b38b147b29ef63c1d628ee4fb31dfea097a0630f4e89b9035ba5418b9238c8a6801ae77875c28653ffff7f20f5ffffef@12fdefd562ecbb938b52d293f80f6570cbe09e5d9f2357995db9820dda514e07d"18446744073709551815 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork.dat b/packages/test-utils/testdata/btc_light_client_fork.dat index 44c5802d..87e173ef 100644 --- a/packages/test-utils/testdata/btc_light_client_fork.dat +++ b/packages/test-utils/testdata/btc_light_client_fork.dat @@ -1,23 +1,23 @@  -04000000537402b9a992798fb1f362a461d201a21360a78d7cc314f3e92f1a2217967820a1667889e817755d848c5c6b9947e4f48bae0b7b173d4935bfc5ea23543331e249ac8653ffff7f20f2ffffef@7a49ba70d6a9216b885d7298783b1de648fb3a8a3fb5def96115fd1471533516["18446744073709551797 +04000000d2ebd1fddc10e8415aba93ee6bb4c04a44d469aa7c2b91b7927961a0a846494c3456181a2843acd491bcd6c04971ed5051a2b00f82ba158bcff1670397d6a8436eae8653ffff7f20f5ffffef@198c381029264a6a0f6c84ed25bd39dd53d49cbf5dfb454a028e07e7e09535cb["18446744073709551797  -040000001635537114fd1561f9deb53f8a3afb48e61d3b7898725d886b21a9d670ba497ad94ef66459d5c855d5c15e63042478f68d9329dd4c6945c101c2664534aa583488ad8653ffff7f20f2ffffef@1d67c9a3b637b0f552ba819135f0c602ffa3ed02981c9f2fb6521167a53d9323\"18446744073709551799 +04000000cb3595e0e7078e024a45fb5dbf9cd453dd39bd25ed846c0f6a4a262910388c19faf499cfa3f65ff52c721c5c6d446063ff3b3310a978476789fc9fbe0327e6fac9af8653ffff7f2003000000@23c5a3e20bc42b016812bd67e9623774370098f04e117924182810e1b3203832\"18446744073709551799  -0400000023933da5671152b62f9f1c9802eda3ff02c6f0359181ba52f5b037b6a3c9671db3e66352d83eed0b87c159a14f514cdb5590d54283e8fe89c31f452ce560143dfaae8653ffff7f20f3ffffef@669023fd4cf2648fff0209a549e1cbc2063de3f8d813396624fbc6dfdd560e22]"18446744073709551801 +04000000323820b3e11028182479114ef0980037743762e967bd1268012bc40be2a3c523c0586dd2711b7afedf6419140cea22d27461988a6d5aaea1c99f7314d3e0cf1e21b18653ffff7f20f2ffffef@1fa2267c650edb9f2c4f2bda615fde0fdefa864cfddf8f2f15c62425953c6ea4]"18446744073709551801  -04000000220e56dddfc6fb24663913d8f8e33d06c2cbe149a50902ff8f64f24cfd2390661877b4acdf0e65cc79a090d802f7c8806304903cc7ee55ab1644d6414c5ba62311b18653ffff7f20f4ffffef@2f3f0b387eacc294a6969c07ab38514bdb42d076f40a7083ca832bfd88a005bf^"18446744073709551803 +04000000a46e3c952524c6152f8fdffd4c86fade0fde5f61da2b4f2c9fdb0e657c26a21fdd98964853d8775b954cfdf33d65a7ae99b5a41f59734a6f5e3e7dfaedc8c90dabb38653ffff7f2001000000@6ee7ad70c65a0e2e0749a5107ad1f4f775d7d0987bbce1ff5e048b17e74e0baf^"18446744073709551803  -04000000bf05a088fd2b83ca83700af476d042db4b5138ab079c96a694c2ac7e380b3f2f5b848d2d5567b4ef78aa1506ece17cbaf948f365dfa85e9b6e1726c72b7824244cb38653ffff7f20f4ffffef@1e676104787f46a14bb22ccd6a076d06e5af4c450fe172ca8fde9c3cefb9ede9_"18446744073709551805 +04000000af0b4ee7178b045effe1bc7b98d0d775f7f4d17a10a549072e0e5ac670ade76ed3da0a600ebb77cc450aecdf04b18bc209bda7ed8b4239b3c214ea2e6f1c88010fb68653ffff7f20feffff3f@062515dee2403731a8de48cfe1ba9e89e9bfd6f1e6c3c0896f6ba1bf7cbbf49f_"18446744073709551805  -04000000e9edb9ef3c9cde8fca72e10f454cafe5066d076acd2cb24ba1467f780461671e7bf13e12892b79ea5704a22f263a53c5731f8f8b0aa94bc99b36d4a8b1fac83f03b58653ffff7f20f2ffffef@31603f090b9530464eb9442860dea3f2d3200b94a343a96647807ff2c993b9fd`"18446744073709551807 +040000009ff4bb7cbfa16b6f89c0c3e6f1d6bfe9899ebae1cf48dea8313740e2de152506610dfd4e78b8f5deb533e814ae41c272d1a0fc8103460db3feaa288257990fb812b88653ffff7f20fdffff3f@666b6b298b84604f72e8a628935f6bb2ec64bd82772cee327b520f5decfa2e90`"18446744073709551807  -04000000fdb993c9f27f804766a943a3940b20d3f2a3de602844b94e4630950b093f60311510b0080280f40631c1de2ee0f4c7b3a46ccba43b1a4b6ae28450d292d76699b0b68653ffff7f20f5ffffef@22e84821d94dcb99a5873c2c44ceed47dfb3d87a518ea7bf22f75cbcd5265506a"18446744073709551809 +04000000902efaec5d0f527b32ee2c7782bd64ecb26b5f9328a6e8724f60848b296b6b6621425e2d08e4204ab5bf329ee894c576d09cc04cbb901513a60d603712a9d389d4ba8653ffff7f2000000010@341ab40cf5b956f66400f85b4de3837fd368bb820612462250e12255b941b0c3a"18446744073709551809  -04000000065526d5bc5cf722bfa78e517ad8b3df47edce442c3c87a599cb4dd92148e8222fd4d5ad7604da3aee2ce92c8fecbed45b0082c2d92162573c249b8c19bf1793a6b78653ffff7f20f2ffffef@7e2e7873633821d63b64ad3200a7f83f24104d005ae85d40be37f498f45a85b0b"18446744073709551811 +04000000c3b041b95522e1502246120682bb68d37f83e34d5bf80064f656b9f50cb41a34edb32a73ab566d7c7afcf19d6b5514b3098a5106ce717233b635131e40687ac53dbd8653ffff7f2005000000@64fe05f148f5aead4e134645c59770206bc0b35490edc186cd6daaacb71bca0db"18446744073709551811  -04000000b0855af498f437be405de85a004d10243ff8a70032ad643bd621386373782e7ea7e2e286777332008e752e919f9ed77069456a1c7da5fa33ab88e370cdcbf92d01b98653ffff7f20f3ffffef@2b94b93389bd1f80f30b023d3e3b3668e5095df63a47de4b9ff7bbef0d74fd23c"18446744073709551813 +040000000dca1bb7acaa6dcd86c1ed9054b3c06b207097c54546134eadaef548f105fe6441f7a7a6cc7e08723ff98558db2fc9baa3dc05d6ab8e557033bdfc141b323aaa8abe8653ffff7f20ffffff1f@29f70c61ca525a861e7e9576664adf7f0c5b738cd7dadba2570bfd50f1060d08c"18446744073709551813  -0400000023fd740defbbf79f4bde473af65d09e568363b3e3d020bf3801fbd8933b9942b63b2b3225efb4f23be7576b2f6b6d32ab2dbbec1cc2e9abecd5b2caf6bb990f044ba8653ffff7f20f2ffffef@61bcd4c34beed93a2420f9902d4442c7fbeaf7b7fb162e22f0e22b8ae71c63ead"18446744073709551815 +04000000080d06f150fd0b57a2dbdad78c735b0c7fdf4a6676957e1e865a52ca610cf7294922a937119db3ace5c3aa180a92a1b6baa5b7765943d79b1810121c47288f8decbf8653ffff7f20ffffff1f@26b09ebb831ceb0090d5d30655933a524fbc80e1be81d8928bf3b14101ab1767d"18446744073709551815  -04000000ea631ce78a2be2f0222e16fbb7f7eafbc742442d90f920243ad9ee4bc3d4bc61cd1ab852dfb3fecf3c56b15f71c861de19159ec345fe81b26b72422169d5c806ebbc8653ffff7f20f2ffffef@7c15ae3eb9d4fc50e93da4bb3244368ec7c40de7e15b7f4f893eba43d2014b50e"18446744073709551817 \ No newline at end of file +040000006717ab0141b1f38b92d881bee180bc4f523a935506d3d59000eb1c83bb9eb02666b71c1eea67676e57d388dfa4a910e072e283a7004665839c7eadc22e93530840c18653ffff7f2000000020@30409df88ec40d69e91be43c992d1409b13d84b0722acb76d5c04886e8f8c60ae"18446744073709551817 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_light_client_fork_msg.json b/packages/test-utils/testdata/btc_light_client_fork_msg.json index 126b36d0..1e5f905f 100644 --- a/packages/test-utils/testdata/btc_light_client_fork_msg.json +++ b/packages/test-utils/testdata/btc_light_client_fork_msg.json @@ -1 +1 @@ -{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"20789617221a2fe9f314c37c8da76013a201d261a462f3b18f7992a9b9027453","merkle_root":"e231335423eac5bf35493d177b0bae8bf4e447996b5c8c845d7517e8897866a1","time":1401334857,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"7a49ba70d6a9216b885d7298783b1de648fb3a8a3fb5def96115fd1471533516","merkle_root":"3458aa344566c201c145694cdd29938df6782404635ec1d555c8d55964f64ed9","time":1401335176,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"1d67c9a3b637b0f552ba819135f0c602ffa3ed02981c9f2fb6521167a53d9323","merkle_root":"3d1460e52c451fc389fee88342d59055db4c514fa159c1870bed3ed85263e6b3","time":1401335546,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"669023fd4cf2648fff0209a549e1cbc2063de3f8d813396624fbc6dfdd560e22","merkle_root":"23a65b4c41d64416ab55eec73c90046380c8f702d890a079cc650edfacb47718","time":1401336081,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"2f3f0b387eacc294a6969c07ab38514bdb42d076f40a7083ca832bfd88a005bf","merkle_root":"2424782bc726176e9b5ea8df65f348f9ba7ce1ec0615aa78efb467552d8d845b","time":1401336652,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"1e676104787f46a14bb22ccd6a076d06e5af4c450fe172ca8fde9c3cefb9ede9","merkle_root":"3fc8fab1a8d4369bc94ba90a8b8f1f73c5533a262fa20457ea792b89123ef17b","time":1401337091,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"31603f090b9530464eb9442860dea3f2d3200b94a343a96647807ff2c993b9fd","merkle_root":"9966d792d25084e26a4b1a3ba4cb6ca4b3c7f4e02edec13106f4800208b01015","time":1401337520,"bits":545259519,"nonce":4026531829},{"version":4,"prev_blockhash":"22e84821d94dcb99a5873c2c44ceed47dfb3d87a518ea7bf22f75cbcd5265506","merkle_root":"9317bf198c9b243c576221d9c282005bd4beec8f2ce92cee3ada0476add5d42f","time":1401337766,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"7e2e7873633821d63b64ad3200a7f83f24104d005ae85d40be37f498f45a85b0","merkle_root":"2df9cbcd70e388ab33faa57d1c6a456970d79e9f912e758e0032737786e2e2a7","time":1401338113,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"2b94b93389bd1f80f30b023d3e3b3668e5095df63a47de4b9ff7bbef0d74fd23","merkle_root":"f090b96baf2c5bcdbe9a2eccc1bedbb22ad3b6f6b27675be234ffb5e22b3b263","time":1401338436,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"61bcd4c34beed93a2420f9902d4442c7fbeaf7b7fb162e22f0e22b8ae71c63ea","merkle_root":"06c8d5692142726bb281fe45c39e1519de61c8715fb1563ccffeb3df52b81acd","time":1401339115,"bits":545259519,"nonce":4026531826}]}} \ No newline at end of file +{"btc_headers":{"headers":[{"version":4,"prev_blockhash":"4c4946a8a0617992b7912b7caa69d4444ac0b46bee93ba5a41e810dcfdd1ebd2","merkle_root":"ec3c27cb47a2c8e340bec0086da23873b0c784fe96479c94c122a9fa1a4aa649","time":1401335490,"bits":545259519,"nonce":1879048186},{"version":4,"prev_blockhash":"026839beaae87f5685bb4e6cf26196bcebca2d67dfa3df7a1bf608c5a2b8c5e0","merkle_root":"76ffbe87a0bcce571adcd283aa82ab0c80bfe35a3f905816888b92ff006645d1","time":1401336160,"bits":545259519,"nonce":536870911},{"version":4,"prev_blockhash":"0a48e7d14e1adc3537b2bba1bbf6e6fcefeec30b8056ec59d6570d36eb0b35a5","merkle_root":"4ab92489cf91fe1efea7da84d5a3a95d4555b2e245730872ff116c9754a53c12","time":1401336676,"bits":545259519,"nonce":268435456},{"version":4,"prev_blockhash":"78ab4b59d6dd4fca8fa0a7ecf2cb8a926426f619d71c8e3dc1c621aa286f94b4","merkle_root":"46f2d3a41623668e96dff6877aecd5c2ecef41e1b39220e5dd58a3ca2710ce39","time":1401337192,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"7a096133152e005603fcb2ad12949a06938263f7a12b6645344c6298dcd12944","merkle_root":"6477d6f37965df87c288a620615bc949fba381833df0327418d6d3c69df92160","time":1401337453,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"2c7ce5df64e815a28514c1ab811b2be4636d69660a6d7d6dd6412578769824eb","merkle_root":"d1035e33769f1189d1127d383dbd03d7c8999239494c6a71d213434695db5ae7","time":1401338122,"bits":545259519,"nonce":4026531828},{"version":4,"prev_blockhash":"156b3b6e7271f0ede6732fdd36c00685e05698d6113bbbc7a34d403fe36ebfa4","merkle_root":"641e0d686113bba1b6204e891b7bf6277abf5b23af01daf364731b10a345ccc3","time":1401338416,"bits":545259519,"nonce":4026531826},{"version":4,"prev_blockhash":"452784cca914583d538ff8219f182285c1d35368044e809ed6adcb7019c87533","merkle_root":"a59ff1b42bb10a6ce9277cc5b03ed09396e7c15e93322ff0c01f02440da85e04","time":1401339022,"bits":545259519,"nonce":4026531827},{"version":4,"prev_blockhash":"76b7315509240fc84dbdd8cd2a0bef922b8ed69d5a4db77f4d226ac523211151","merkle_root":"b313472d1e7989f41ccd3d95deea3ed8506870aafd74b762cfad8140e6fdbebf","time":1401339527,"bits":545259519,"nonce":1},{"version":4,"prev_blockhash":"7dce28a17500d833750f6060f9ea4f3517064e40efa43e77dac1ad1ec901f6ee","merkle_root":"50cde464b925ef047814d8ab48dd856c72e64982d58d2e2d09fbcf278af5a51a","time":1401340203,"bits":545259519,"nonce":268435456},{"version":4,"prev_blockhash":"4e6bf95b0addad3b17b7c81a476aab56bb70b2f26ed0cea69d90b40df661b75c","merkle_root":"4f2e5351c85d461b167f9dbc435f4cb3e18ecebc183f8d23b70f11530ae0111e","time":1401340518,"bits":545259519,"nonce":4026531826}]}} \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_timestamp.dat b/packages/test-utils/testdata/btc_timestamp.dat index 7702fc4ed1f76a6fb7d00eafd82750bd4c8d3330..046d5959f0e54e771e87db4c20d483d2c822d1f1 100644 GIT binary patch literal 5835 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 diff --git a/packages/test-utils/testdata/btc_timestamp_header0.dat b/packages/test-utils/testdata/btc_timestamp_header0.dat index d3ac6835..434a41c7 100644 --- a/packages/test-utils/testdata/btc_timestamp_header0.dat +++ b/packages/test-utils/testdata/btc_timestamp_header0.dat @@ -1,2 +1,2 @@ -$ˁƬH9ggZDwf#[΢Tn-u[w!ŮFq}\. -o 6[ \ No newline at end of file +5pfQxr@Q/ ^CFl\ +J  i-sz;wՑ^R̥_د7 \ No newline at end of file diff --git a/packages/test-utils/testdata/btc_timestamp_header1.dat b/packages/test-utils/testdata/btc_timestamp_header1.dat index 1d8c70b7..64b91256 100644 --- a/packages/test-utils/testdata/btc_timestamp_header1.dat +++ b/packages/test-utils/testdata/btc_timestamp_header1.dat @@ -1,2 +1,2 @@ -8b z?~x c /ˊ!{q2ۀɔ 4ch{W^_,JBjicr -P@ ? \ No newline at end of file +J"3/vhԼ鐈EtWu=V[^;!BeEY̰tNF +$t5 \ No newline at end of file diff --git a/packages/test-utils/testdata/btcstaking_params.dat b/packages/test-utils/testdata/btcstaking_params.dat index 72bb6c08d91c7169d9895a539b08aba8d396003b..837a79cb94e04bc196e8903f9aa6e7285ebbde33 100644 GIT binary patch literal 217 zcmV;~04DzmAg_0@3F3;k0k~C>X}Siw^CNgU%6a@v=&bQ#zf_s+PzoS>Uv1L>REf>z zqtK|ke`g_R#&^*@C-&qsEa^?o!*^r~AZNKvbL_S&33G5vj}JnsLXU5e<|lnSnV7KF zT;d1(@d_ZdXvi5T5bZ#&me&GadN>VxgD;3qXZ)G4YKK_4{m>{1AQx!g!*`%s>S03@ z0tiQHXyGRmPiXsTbxBJKYOgglgAfB6B5h|mR!vAkVKO;LYI18aMssITX*g0wG-+W- TS~6~QMOJqz0WdNFFiHV1mBw64 literal 217 zcmV;~04DzmAPixb?{B5Nyy8Ub?^sKkPYpFAbuaqIT{XjaE&lUrI|?8H1nVt%`Gr4% z@cMWyJjY~21K%3zCZt#DS#iP~sJ00TAlnAq_mAF0sFk*C(^i|hm^M~xA}~vQf7o2nc{efFU=$0xHV^|EB5iJFcvMnZMng+dbv0OVRW?;~OJQ(OR#-81 TVKqo`QB6!L0WdNFFiHV1(Og#@ diff --git a/packages/test-utils/testdata/commit_pub_rand_msg.dat b/packages/test-utils/testdata/commit_pub_rand_msg.dat index 5c8c2d93e5c34da689315c2067eb998bfd165f51..78468c4ac7b80855c2d1a3d6e5f1abf9c64c4f46 100644 GIT binary patch literal 182 zcmV;n07?G}Dq>=8F>`S~Qr1v(-l4q2-xsdm|p%kx{c&N=8F*0gncx7-lc4%vCacXjEYkD(iaAR$Ccx+}cGC6H_W@I>FWHNCQ zAgh#3j5?g=&Fz3Zt{rvGQ>ha;pB3UdV?<+|zI>|>-WX&c3MwFY`@fpAUpRkHXHn+2 zNPTcgKXRJYIL@i7%_&h@q&IIeK#BYO(pBtU1kSX+B2oT9}Cdbz=> kgmCGPaw=~GC$P9q{_!h!bengJs?s9@&@kV!v?Zgyi~8JD@c;k- diff --git a/packages/test-utils/testdata/eots_testdata.json b/packages/test-utils/testdata/eots_testdata.json index d03fca0c..cab27ec6 100644 --- a/packages/test-utils/testdata/eots_testdata.json +++ b/packages/test-utils/testdata/eots_testdata.json @@ -1 +1 @@ -{"sk":"93e5bd142f23b0a7feeb50fe56f4eb8008d5ebbdf66f363f3378bf5b28a6c5b2","pk":"77500466761d126c45c25ee6f2abd86a69512b7560de89a375f6977d9209d56a","sr":"c1d279dd6ca65f81d5c5bbb6d9f04aeef783c5c8a8cbd6b7907af87be00d6b89","pr":"51b3bdb084012aa811f35c90dd68d42e4a86f3d5d272bb28525bce8314387c9a","msg1":"68656c6c6f20776f726c642031","msg2":"68656c6c6f20776f726c642032","sig1":"4cc00c4d2f7dcbe9bfd500f41aa6d0a4507a395b541d7e7f221946de347736dd","sig2":"2eabbe9c2959e43f03990a5b11775de9bafc841d9437bac5013f620ff16767ac"} \ No newline at end of file +{"sk":"980aece2593cd7f262c5da8b4dd0434748dad17f171497a33d74fe69e0197824","pk":"a6c38494dcda81b0ef013f10e294dd0c7bbffaf396f68bd4b87bf6ef01252d5a","sr":"5898e61d7f2f047b7d5fc92294f27e703f028a7a50389d5dfaf8558e2f1fa2c5","pr":"9802d0fb76f0fdef2c4c9afdba5556abe768125c526b2cf5a23fa5b8e290e30f","msg1":"68656c6c6f20776f726c642031","msg2":"68656c6c6f20776f726c642032","sig1":"bbcd1d70b747b2726f1cff3266f51caaeffb59327e30004b7d593914d9572049","sig2":"881c1c5e0d09c386072851d8d477ff3f4c0316733a6b1e7b9a838832ed454abe"} \ No newline at end of file diff --git a/packages/test-utils/testdata/finality_provider_1.dat b/packages/test-utils/testdata/finality_provider_1.dat index 012331359b00d49117f047e74d584a333cf3bf86..817a979637b223c34b4377d68af0f37196c49fca 100644 GIT binary patch literal 202 zcmd`DbRRIZyZ?C;-uWglmxZL~1VFkgm zu-6VuVQ(wdjI^AD9F7LYUihS2z)`eT^?k+kzHKX>pLym!!&zAUsW-1KD&C8g%YT5T(_LcvZdR+e9=XdRRY~NHyS1+#Q{Ji4Q+|(jnLjZ*WO*jAm literal 201 zcmdPF6{-Fi0Hy=+aIlceWzd!SW4((aYvtapFj`V=T|Fw$jG!B1@ ri2LufJRv*v_R%GopH^fYHjPT#zAoeI-u-L6xRUepic51-i*yYE0_9O? diff --git a/packages/test-utils/testdata/finality_provider_2.dat b/packages/test-utils/testdata/finality_provider_2.dat index 5f8f480c..12ae9652 100644 --- a/packages/test-utils/testdata/finality_provider_2.dat +++ b/packages/test-utils/testdata/finality_provider_2.dat @@ -1,4 +1,5 @@ -*bbn193axrcgeddw92nlkw00yr7np4jrdmqlcmux50q -e88342d590c1870bed3e380000000000000000" Σ%e&>A1NFYUot#2*B@|q=FoWC S#Żı'n@Uʺ#0Z{7+=EJ +*bbn1n9swakzutmwzpadjlgq9rx3uepst2kvrs76gmk +f963e578ee80092bce85160000000000000000" Qfj?/ +1bͣM|t;_*B@ c-fwO̳jX_M5c,%} /H3ݳȵJ consumer-2 \ No newline at end of file diff --git a/packages/test-utils/testdata/finality_provider_3.dat b/packages/test-utils/testdata/finality_provider_3.dat index 3a8e0efb6469caa59ca4042595ee49fc3e5ee91d..c12a0e3450b20a4da6269239fd76d6c680c207ed 100644 GIT binary patch literal 202 zcmd-+Ln@g04k z&Y-eJ>?rd!6D=nphs6t{L;Sy%?LN1i*Z=&hTfVNPC%3LmR&V`W^)+6t|6fk@PtL%w tn_hk)KVERe#NGdP_!#d#;fq!}E7mxh22|Q-d2uD@=M|UcrWWZM0{}&mPOty~ literal 202 zcmdZ#&Z!g<;}S_S zOfgC`F*YzuGfYafG_|luwlJ0wGPX2814;^ynOMGmS{_-;oXpw$;G(;i!DUUJPf5IL z*C+0kG^m(yUCT+x;pnFRU2XsDfDDujyf`Nd zTzzn$U|R;0!%v2+47+&-z0M&j%uo4N{h8_Q$P_;z^?OgkK9jfSj-d6ztc=0I; literal 102 zcmd1r;m| From 7ec4e5f37b60fa06e909c4f3c1817172e26f59c1 Mon Sep 17 00:00:00 2001 From: Runchao Han Date: Mon, 2 Sep 2024 15:08:21 +1000 Subject: [PATCH 6/8] fix --- contracts/btc-staking/src/queries.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/contracts/btc-staking/src/queries.rs b/contracts/btc-staking/src/queries.rs index 884528f1..3e892e31 100644 --- a/contracts/btc-staking/src/queries.rs +++ b/contracts/btc-staking/src/queries.rs @@ -298,25 +298,27 @@ mod tests { .fps; let fp1 = FinalityProvider::from(&new_fp1); - let fp1_pk = fp1.btc_pk_hex.clone(); let fp2 = FinalityProvider::from(&new_fp2); - assert_eq!(fps.len(), 2); - assert_eq!(fps[0], fp1); - assert_eq!(fps[1], fp2); + let expected_fps = vec![fp1.clone(), fp2.clone()]; + assert_eq!(fps.len(), expected_fps.len()); + for fp in fps { + assert!(expected_fps.contains(&fp)); + } // Query finality providers with limit let fps = crate::queries::finality_providers(deps.as_ref(), None, Some(1)) .unwrap() .fps; assert_eq!(fps.len(), 1); - assert_eq!(fps[0], fp1); + assert!(fps[0] == fp1 || fps[0] == fp2); // Query finality providers with start_after - let fps = crate::queries::finality_providers(deps.as_ref(), Some(fp1_pk.clone()), None) + let fp_pk = fps[0].btc_pk_hex.clone(); + let fps = crate::queries::finality_providers(deps.as_ref(), Some(fp_pk), None) .unwrap() .fps; assert_eq!(fps.len(), 1); - assert_eq!(fps[0], fp2); + assert!(fps[0] == fp1 || fps[0] == fp2); } #[test] From 4294b139ad97756f96b0ded31ebb70196fb2059e Mon Sep 17 00:00:00 2001 From: Mauro Lacy Date: Mon, 2 Sep 2024 12:57:37 +0200 Subject: [PATCH 7/8] Update babylon submodule ref to latest base branch --- .gitmodules | 6 +++--- packages/proto/babylon | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index b164a9c5..b91550cb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "packages/proto/babylon"] -path = packages/proto/babylon -url = git@github.com:babylonlabs-io/babylon.git -branch = dev + path = packages/proto/babylon + url = git@github.com:babylonlabs-io/babylon.git + branch = base/consumer-chain-support diff --git a/packages/proto/babylon b/packages/proto/babylon index d63c121c..81ee356f 160000 --- a/packages/proto/babylon +++ b/packages/proto/babylon @@ -1 +1 @@ -Subproject commit d63c121c49944885785ca67ab8b7f64165687070 +Subproject commit 81ee356f706d6132fd3056f75650ec143448a7dc From 5157bab997ea04626024cfd64f865a5d74428b4f Mon Sep 17 00:00:00 2001 From: Runchao Han Date: Tue, 3 Sep 2024 10:20:53 +1000 Subject: [PATCH 8/8] pr comments --- datagen/utils/btcstaking.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datagen/utils/btcstaking.go b/datagen/utils/btcstaking.go index 60c9f19e..57126144 100644 --- a/datagen/utils/btcstaking.go +++ b/datagen/utils/btcstaking.go @@ -172,11 +172,11 @@ func GenBTCDelegationsAndParams(dir string) { covenantSKs, covenantQuorum := GenParams(dir) // 3 FPs GenFinalityProviders(dir, 3) - // 2 BTC delegations under 1st FPs + // 3 BTC delegations under 1st FPs GenBTCDelegations(dir, covenantSKs, covenantQuorum, 1, []int{1}) GenBTCDelegations(dir, covenantSKs, covenantQuorum, 2, []int{1}) GenBTCDelegations(dir, covenantSKs, covenantQuorum, 3, []int{1}) - // 2 BTC delegations under 2nd FPs + // 3 BTC delegations under 2nd FPs GenBTCDelegations(dir, covenantSKs, covenantQuorum, 1, []int{2}) GenBTCDelegations(dir, covenantSKs, covenantQuorum, 2, []int{2}) GenBTCDelegations(dir, covenantSKs, covenantQuorum, 3, []int{2})