From 8fa496b866dc309e67c9c03b09599528153b052e Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Thu, 1 Feb 2024 21:54:30 +0100 Subject: [PATCH] Build Polkadot Nodes in CI - fixes artifact generation (#1410) * new workflow and adjust node builder * fix examples by fixing artifacts script * use-nodes instead of use-substrate * update yamls * build polkadot * remove the on-push trigger again, now that polkadot built in the CI * add default implementation again --- .github/workflows/actions/use-nodes/README.md | 3 + .../workflows/actions/use-nodes/action.yml | 33 + .../workflows/actions/use-substrate/README.md | 3 - .../actions/use-substrate/action.yml | 19 - .../{build-substrate.yml => build-nodes.yml} | 21 +- .github/workflows/nightly.yml | 4 +- .github/workflows/rust.yml | 36 +- .github/workflows/update-artifacts.yml | 4 +- artifacts/demo_chain_specs/polkadot.json | 12 +- artifacts/polkadot_metadata_full.scale | Bin 288657 -> 305434 bytes artifacts/polkadot_metadata_small.scale | Bin 59353 -> 60492 bytes artifacts/polkadot_metadata_tiny.scale | Bin 37631 -> 37934 bytes scripts/artifacts/src/main.rs | 6 +- .../src/full_client/codegen/polkadot.rs | 4671 +++++++++++++---- testing/substrate-runner/src/lib.rs | 16 +- 15 files changed, 3776 insertions(+), 1052 deletions(-) create mode 100644 .github/workflows/actions/use-nodes/README.md create mode 100644 .github/workflows/actions/use-nodes/action.yml delete mode 100644 .github/workflows/actions/use-substrate/README.md delete mode 100644 .github/workflows/actions/use-substrate/action.yml rename .github/workflows/{build-substrate.yml => build-nodes.yml} (65%) diff --git a/.github/workflows/actions/use-nodes/README.md b/.github/workflows/actions/use-nodes/README.md new file mode 100644 index 0000000000..d78115a46f --- /dev/null +++ b/.github/workflows/actions/use-nodes/README.md @@ -0,0 +1,3 @@ +# use-nodes + +This action downloads the substrate and polkadot binaries produced from the `build-nodes` workflow and puts them into the `$PATH`. \ No newline at end of file diff --git a/.github/workflows/actions/use-nodes/action.yml b/.github/workflows/actions/use-nodes/action.yml new file mode 100644 index 0000000000..afbfe7584d --- /dev/null +++ b/.github/workflows/actions/use-nodes/action.yml @@ -0,0 +1,33 @@ +name: Use substrate and polkadot binaries +description: Downloads and configures the substrate and polkadot binaries built with `build-nodes` +runs: + using: composite + steps: + - name: Download substrate-node binary + id: download-substrate-binary + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # v2.28.0 + with: + workflow: build-nodes.yml + name: nightly-substrate-binary + + - name: Download polkadot binary + id: download-polkadot-binary + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # v2.28.0 + with: + workflow: build-nodes.yml + name: nightly-polkadot-binary + + - name: Prepare binaries + shell: bash + run: | + chmod u+x ./substrate-node + chmod u+x ./polkadot + chmod u+x ./polkadot-execute-worker + chmod u+x ./polkadot-prepare-worker + ./substrate-node --version + ./polkadot --version + mkdir -p ~/.local/bin + cp ./substrate-node ~/.local/bin + cp ./polkadot ~/.local/bin + cp ./polkadot-execute-worker ~/.local/bin + cp ./polkadot-prepare-worker ~/.local/bin diff --git a/.github/workflows/actions/use-substrate/README.md b/.github/workflows/actions/use-substrate/README.md deleted file mode 100644 index 71f0a55fbf..0000000000 --- a/.github/workflows/actions/use-substrate/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# use-substrate - -This action downloads the substrate binary produced from the `build-substrate` workflow and puts it into the `$PATH`. \ No newline at end of file diff --git a/.github/workflows/actions/use-substrate/action.yml b/.github/workflows/actions/use-substrate/action.yml deleted file mode 100644 index b3bffcd314..0000000000 --- a/.github/workflows/actions/use-substrate/action.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Use substrate binary -description: Downloads and configures the substrate binary built with build-substrate -runs: - using: composite - steps: - - name: Download substrate-node binary - id: download-artifact - uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # v2.28.0 - with: - workflow: build-substrate.yml - name: nightly-substrate-binary - - - name: Prepare substrate-node binary - shell: bash - run: | - chmod u+x ./substrate-node - ./substrate-node --version - mkdir -p ~/.local/bin - cp ./substrate-node ~/.local/bin diff --git a/.github/workflows/build-substrate.yml b/.github/workflows/build-nodes.yml similarity index 65% rename from .github/workflows/build-substrate.yml rename to .github/workflows/build-nodes.yml index 4cadcc7200..045355e8ea 100644 --- a/.github/workflows/build-substrate.yml +++ b/.github/workflows/build-nodes.yml @@ -1,4 +1,4 @@ -name: Build Substrate Binary +name: Build Substrate and Polkadot Binaries on: # Allow it to be manually ran to rebuild binary when needed: @@ -9,7 +9,7 @@ on: jobs: tests: - name: Build Substrate + name: Build Substrate and Polkadot Binaries runs-on: ubuntu-latest-16-cores steps: - name: checkout polkadot-sdk @@ -42,3 +42,20 @@ jobs: path: target/release/substrate-node retention-days: 2 if-no-files-found: error + + - name: build polkadot binary + uses: actions-rs/cargo@v1 + with: + command: build + args: --release --manifest-path polkadot/Cargo.toml + + - name: upload polkadot binary + uses: actions/upload-artifact@v3 + with: + name: nightly-polkadot-binary + path: | + target/release/polkadot + target/release/polkadot-execute-worker + target/release/polkadot-prepare-worker + retention-days: 2 + if-no-files-found: error diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 2add781112..e19296d1da 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -16,8 +16,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index fdfc639a35..1ae0289609 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -56,8 +56,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -88,8 +88,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -120,8 +120,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -151,8 +151,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -240,8 +240,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -274,8 +274,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -308,8 +308,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -342,8 +342,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -388,8 +388,8 @@ jobs: - name: Rust Cache uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Run subxt WASM tests run: | diff --git a/.github/workflows/update-artifacts.yml b/.github/workflows/update-artifacts.yml index fc60c801f6..a8f4d03812 100644 --- a/.github/workflows/update-artifacts.yml +++ b/.github/workflows/update-artifacts.yml @@ -21,8 +21,8 @@ jobs: uses: actions/checkout@v4 # We run this (up-to-date) node locally to fetch metadata from it for the artifacts - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index 984506f6bc..0b5bec371c 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -32,7 +32,9 @@ "/dns/dot-bootnode.stakeworld.io/tcp/30311/ws/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg", "/dns/dot-bootnode.stakeworld.io/tcp/30312/wss/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg", "/dns/dot14.rotko.net/tcp/35214/wss/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff", - "/dns/dot14.rotko.net/tcp/33214/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff" + "/dns/dot14.rotko.net/tcp/33214/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff", + "/dns/ibp-boot-polkadot.luckyfriday.io/tcp/30333/p2p/12D3KooWEjk6QXrZJ26fLpaajisJGHiz6WiQsR8k7mkM9GmWKnRZ", + "/dns/ibp-boot-polkadot.luckyfriday.io/tcp/30334/wss/p2p/12D3KooWEjk6QXrZJ26fLpaajisJGHiz6WiQsR8k7mkM9GmWKnRZ" ], "chainType": "Live", "forkBlocks": null, @@ -41,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x044736295f5ace57cb8f84fd667e8ed439db12f470d45736d046f67f54bccaada2b69c16010153bae41000000000b3c3e41000000000046646627e2646c3b728990fc968ec647c2170e66b55fbe48365e54557ae43756916a6160101b3c3e4100000000013cde41000000000086441c5d73eef491062ed18d31770e3f8a95eba0a9e78b407d28c706c6f06332775af16010113cde4100000000073d6e41000000000007494065a1f61226b66736add1b00a214e14611c3f78e1ab4d3e0d9c69ae732f875af16010113cde4100000000073d6e410000000000000104736295f5ace57cb8f84fd667e8ed439db12f470d45736d046f67f54bccaada2b69c160101da1d00000000000053bae410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d01000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e051010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a0100000000000000dc68569b46a09aebabe8fc4452e293fac635e4a2889739809b32e4e2303e3f71010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d120010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000d08dade453078ef481107714d602bafaa5f1247ec053c3fb62fa8ce53c1df4700100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a520100000000000000783134a08ea27221e873043cd0ee52a9f79c2eb14d5cd25afed24d7c82cb2246010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000dcbaae9e44c778fd2914d5940c24033575b5b0ef13d0157a667e4a52d9e719070100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000dc5dac973975ef5f4edef722e9727d0c05a73e4e45f7e524a8d216d2a691a6710100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b25101000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee2101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce007601000000000000001049c5c0f0493537f48c6b122d697f28cf8ea36ab772591ae875da8aae1198520100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000000c68512e2e5dca7783df908fa702dce48d67a439655fe52de6d29cb07890445a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000078fb9f8411552c70290a09cdc6a0e235c74364d37204ec06ab62a4d45201233e010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000163a52c9bc0e859d814e742b7b5c8ad8e9c603d3d1f2b896256df27320290f050100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd130100000000000000f6d56c6aaa5121b6a63f13af233d5233b608d53eb7f789a3db3749a4cea2f34f010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec1720100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000126a7f10393da0379401ed5fc6945ed0cc3a795c2a192b0bbc3708d24ada404401000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf83679010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000f7cff79458978cd2bff24aae8998623a56cd921ea318c40201b4fe2cd3fb781601000000000000000400000000000000026441c5d73eef491062ed18d31770e3f8a95eba0a9e78b407d28c706c6f06332775af160101dc1d00000000000013cde410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d0100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e278499708473201000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e0510100000000000000e07446ce5f2219527928039f41b43de71567e0d247a53064b32a1732a9bab306010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d12001000000000000004052e492aef88954afd9666ecb54ef5303a87394cb0690610841955f3dab1175010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000062d976890a75034b16ddf5c2cfe9e50620782336e19159bb0a11b585b5920f71010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000ea7a085eb85651e30b4420daeb2935d87931349e62728f7329b46755d424c2320100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000008c6d9a2bb472764af439b9dd83d68dd0a0c1a77fbf1025a0e6bbfa3e9c8e857401000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc136201000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006ac767a27a7c0d66cc9493e93dc9d37a114b8a05ef7ee4b22db346661446e6280100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c01000000000000006cb06d06d7955ca5e61897e7f2c4576469e09185f010d96e9bcc84533d1a036b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000006edcddd44823f4f48b53a4172c3bbe239842ac1e663eeb0222fd715d050d7a5101000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf8367901000000000000007011cf9db6405d2a4b0ffe11b6a6f9de0c8919d0f70e980d6c6e221e98590e0a010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000dc9fce160b2cd9c97257b75c861d32348337de685c69042659eec13a0055b4500100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca9273446872010000000000000049e7432ee40ede3d43ba6ed37822ac124d32bd6605844c728e889df99472bc1501000000000000000400000000000000026646627e2646c3b728990fc968ec647c2170e66b55fbe48365e54557ae43756916a6160101db1d000000000000b3c3e410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d01000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e051010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a0100000000000000dc68569b46a09aebabe8fc4452e293fac635e4a2889739809b32e4e2303e3f71010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d120010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000d08dade453078ef481107714d602bafaa5f1247ec053c3fb62fa8ce53c1df4700100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a520100000000000000783134a08ea27221e873043cd0ee52a9f79c2eb14d5cd25afed24d7c82cb2246010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000dcbaae9e44c778fd2914d5940c24033575b5b0ef13d0157a667e4a52d9e719070100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000dc5dac973975ef5f4edef722e9727d0c05a73e4e45f7e524a8d216d2a691a6710100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b25101000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee2101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce007601000000000000001049c5c0f0493537f48c6b122d697f28cf8ea36ab772591ae875da8aae1198520100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000000c68512e2e5dca7783df908fa702dce48d67a439655fe52de6d29cb07890445a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000078fb9f8411552c70290a09cdc6a0e235c74364d37204ec06ab62a4d45201233e010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000163a52c9bc0e859d814e742b7b5c8ad8e9c603d3d1f2b896256df27320290f050100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd130100000000000000f6d56c6aaa5121b6a63f13af233d5233b608d53eb7f789a3db3749a4cea2f34f010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec1720100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000126a7f10393da0379401ed5fc6945ed0cc3a795c2a192b0bbc3708d24ada404401000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf83679010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000f4751bb25e58daf18770161b19fc3c544f5b5d3986275612bfaeba70d882887101000000000000000400000000000000027494065a1f61226b66736add1b00a214e14611c3f78e1ab4d3e0d9c69ae732f875af160101dc1d00000000000013cde410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d0100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e278499708473201000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e0510100000000000000e07446ce5f2219527928039f41b43de71567e0d247a53064b32a1732a9bab306010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d12001000000000000004052e492aef88954afd9666ecb54ef5303a87394cb0690610841955f3dab1175010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000062d976890a75034b16ddf5c2cfe9e50620782336e19159bb0a11b585b5920f71010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000ea7a085eb85651e30b4420daeb2935d87931349e62728f7329b46755d424c2320100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000008c6d9a2bb472764af439b9dd83d68dd0a0c1a77fbf1025a0e6bbfa3e9c8e857401000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc136201000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006ac767a27a7c0d66cc9493e93dc9d37a114b8a05ef7ee4b22db346661446e6280100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c01000000000000006cb06d06d7955ca5e61897e7f2c4576469e09185f010d96e9bcc84533d1a036b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000006edcddd44823f4f48b53a4172c3bbe239842ac1e663eeb0222fd715d050d7a5101000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf8367901000000000000007011cf9db6405d2a4b0ffe11b6a6f9de0c8919d0f70e980d6c6e221e98590e0a010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000dc9fce160b2cd9c97257b75c861d32348337de685c69042659eec13a0055b4500100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca9273446872010000000000000049e7432ee40ede3d43ba6ed37822ac124d32bd6605844c728e889df99472bc150100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4559738, - "finalizedBlockHeader": "0xd77079fcf54a7a83fb2b75b24bc4c7b8a776c50c5a6ca04fcf5eba857e2a7f5052c05a04443844f2007aff2b5c8afe4731e735126f337ad52776ffd32f586da47451186fd49b29a11d724d4a7e0eba71b2c74ce1f9fe5958264219cf8ec4160346bc6b12080642414245b501036200000052c4e410000000009a76cf5448916664e377946b2cdf61f1afdc50feae99314db4a62b2ecd5fb24c501e3f442fc8eb763a2fe20657380d5e43c7b8223b90137aeafca12dfe65cd01a3c5a3977a9f1d929cd0855d15aa6f8a5d304ad7f1745bcc857e6e69d0a0e9020542414245010186408d036b3647c440fec22006c5386f1eef56c4fb9314e8bcea8bd26c681f04f8910b1bb3332e0bd2ce3b2cb16a3a9cbf53cb7b1c1152b0693ac90b268eca89", - "grandpaAuthoritySet": "0xa5042f8da08bb2421ef844015c3b2ea23464fc66a9dcb4a2215fe0241f892d19afc50100000000000000fff437ff18629bf1490e5c9b3ec6f1515d46bb9b2aeaa6e39e36611f2479b50d01000000000000000334021ff54e46fb7da4bd257cf113519a0c7ee4a2251b66fe48466fed5853520100000000000000d95f04dc8ea4ac05deea7077457f0406fdd152bd03a7480e7d0de0983b959d3c010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000e0b1aae640bfbed119730710c584be65ef59abb3e9ee5dc8a754751e1ba163960100000000000000495a0370e02aadf1beff005feceb521a1d9bb0d85e7fe58658b97ec988fb996c0100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc687601000000000000005b27660cd4c375f2654c6d923b29fd8abbab7e96ee040c79598be14f832f56ca010000000000000057ae0c85ebaf333a6ec3251f577cab910cce072f238d1e50046322b83bbc0dd5010000000000000072c09c9e2dc9ab20a65cf70e951352f554442514ba2ac7063966ea7bbe3e6cf001000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e01000000000000007cd50f6921fade39653f847bddd48360668004225081a6a3ad7997f78debd34c010000000000000053a51c848834661c92e74b3c2492b8de2591f914ab75345d70e61c79be9699d70100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000053352e16d2a27fb3525d5d8750d6ad7f46b303a45e434a409ac727d5cb80432b01000000000000008c54298c6f8704498112ecb24f64f7a28ed2289ec573620b0d1e5a9a44f5fa78010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000c9dc00c6a757495c50092362d5c70d2a971ae1da4eb67c9da9f4367c9d408c1d0100000000000000049cb09a86d544249f9e11cf6c348bc0561600343ebee89d1c90bbef3d13e517010000000000000086c42c0f6b8f7c06f9ce823eeecf7cf0371bb5b97f3c7af63872f8bbfb353abd0100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b0100000000000000684768723f0efc2001562c3b2156b987601ae9431f8aaa6f4199649cba487aea01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000c9a741ab82126c4d4eaa6a758cfc1209bbd7b29330e89ccd97fb62ae567c8d4301000000000000009b94bc45bf79bb33f70430c82880456cd7bd5fb3ea131c1b26d493d01c5fe7100100000000000000ce8d085d4b0a9502a680280ecc162bd33533a5ebada62f3be19427542189cb5a0100000000000000a1a9debad5e4afb076cf293c2c797f0b5901ffdb8bd01611235e762411a0db3901000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e40501000000000000007c10f10bd6eb9c1201b52c6025545fcbc310432781bbe02629b5cc9e5fdd229a0100000000000000b046cf7d24d49b720b28dd2476b36c157262208fb065c077b1b94db1e9ffa6050100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000c650b1a6b34347bd80ed06b48aa4ae1a33adaa507e8ac23bf6c6b94223b63b9d01000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000b9186b95c90d2d00a31e7c68066bd37d73408271762604e3608e2f2c983f830901000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd7501000000000000001ba602a293ccdb7a77042fb486c6e010d48b13dff2bef0a26c53637312aac7f70100000000000000ba8180cbc0dceb098ee6b22fe89978bf92ebf196a280470b1501bc2138ec02c70100000000000000f6373ec61f3d99dfcd0bcc6a2b5ddb7e9c8a7d8e5777aa58bc2ac949315dee250100000000000000dc1427d14e83926d22f6be25d1bd39cbc82a194f5e9373ecae644f156ae9c62e010000000000000003d105a30087d96b5f0684f6ded76f826b01dab61e4136e1d851a24f0088b5ed010000000000000020d4e595c50bb9558dad9be6a8784492bbbfc754b9c5fae17edf4f8a84e8b47101000000000000006ba031ff146af5199eeb335a4a9c2fd487685a489e1a154ba1d012e965fdd5ba0100000000000000608f61824d3ae16d443cd0fec15c18590c890d4105e9402cad8743fb423e52b401000000000000000ccee96768f9b1d29d5bd9e63afd2be78a90cc89d19653ff1910cb36000b48530100000000000000818a546c630b881c2161588866965649678cda0f4110cccc3533d0f20e5e41200100000000000000088f8736e1cf2ea3d102f0a96ccf51222b8aa1f93d8e42947892f4395cb5477c0100000000000000c3ff25a1743a9df92af4ccd9a7aed5cbc90f64fd538c3df0a9539128f596526701000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc010000000000000069a6c84df1d25f855b91040e113a5557da8a89d80644ae7bf8d0ba416ab89b6d0100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000007727680e6caac998c03e3702c7f84e558b592dd76ab2a49cdd3dae16e7e853f0100000000000000e78c36a9d8b145c42c879754a79dde433fa2496c55d6d9f00ae577c6b1ff4dfe0100000000000000f8eb309ab851e8f98aa4bd68138a67dc4a435331598079969053a5325b874a51010000000000000059bba625d971d505a9c7d7c2f3ad69203e69e3e5e1fc1e4905fae7703fa19e030100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a1010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000082a1428bcd525a2e77b8f5fb89c73e5fe1261e96e93b383dd2d66767c855c8f001000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b0100000000000000be0a28e5615d9ce3b866b5cf0babf6a7f0e6de06119463382e715b47c89853e40100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000007509d9697cb54f627f47b25e80f46f5d1bf483a9cab5f52df69e1a8f612e486f0100000000000000f3b1c0e43606bd49bc84e403db685b577e898b5f7c5db9052bdc3dacf38dc7ad01000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c010000000000000039dbc464cdd3a095627527d2c7cdfa40444369c636578a7e1129c3109ead35260100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b010000000000000099f58256a4a5d6cf5d99f0cdebbcbe1477db461457647631cd21ca7f3120da6001000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000b71a15131dd5df7c4fdc0b13abdd27488d2becdeacb8a42a227dd90ce92057f2010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a960100000000000000bbad19c54e41fe818395f38b2771d4f83813441596016c9a01afd591c2bee87b0100000000000000f459c0d1b1e42bf6c6f976b70e15e2842d753200ce2f901a7cf1b8c9bfb10c0401000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c00100000000000000ac61d1b7ba7b5731e691f8293c6338ef8e909f97d7eb94c0e7874e17afb0ea5b0100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d0100000000000000fd4ae377dbe850ae5bdd50c71831ccf889ede1785d4011f20e3ca6edf0b93900010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb40100000000000000f9908ae5581496061d7e62b966463ac3fe3b52c4dffbffe4d565d4eb3b8b6dd00100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b979820100000000000000756dd17b3ef4077e4df06f9ce7eaa98fa7dd158f1cba596567f0b89cc12544270100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000f71fca8770328d06e9a45e650e5f58c15feb8ec77ca2dce397490bedfa37db4801000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000005b78368482b0584326a9c0176949523c03ab1446a8aa021701aa9837ccf04fc010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000035c917f27530f3f99142c77541cbc6ac4f27fd49008c0371e54640ec3b49dfe0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000acc5d703d7819d7993784e6ce107cd4c5625954d3baab0bcc07afe7d8c473a2201000000000000004d4a140145f83598fc5a3839260723176f643ae286ff7b2fc460b897fb050a4501000000000000007d3011d58467b4677391062477ccc42adf126de1587287ea7f1af3510817840c01000000000000007e15c89cc954f1ddd6a5f2e9f482c1143f5b7b4ba406ed1264fd25a999f223f20100000000000000442fc5263e255282e1dd5fc8e56c3e72c18648243da370fbad832275de9abc5c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded82701000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a01000000000000004659b8114500937a2db0c810e194610c582865305e141d04e52ee989b80edd87010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000005047f4a799401d6a39e92c7331147b38b421ea59f96d87426c294c660d1ba3d10100000000000000147e7434965c27c972446e97a5f2e8c92e3031858a7d576ce5187eed4e6434d70100000000000000423e84653aad03ac3c5a6eba17239343a6856a514bf898ed61822f67f2bdcfcd0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be0100000000000000da0ea9347962105f4b59f4fd04a85b0493736dd9afddb20829771816bdc3ca6301000000000000004c51b84496e533a7f1bb2b806f3733a7f0a48543976d0a4e5410e831f93e041701000000000000009c39dae41fdfa2e72ce57a6c899b01edf5d1aa421d429ba86d4d1741c58317590100000000000000615d64d17a182504db609d14dc6a45a109817cfaaad1608b4c48382bee48d3780100000000000000155763a153e0c02b2eef1d8a9cd8a50a9eaac9d3af7ad1e559b1e2320b521e1c01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e8301000000000000004242378110faf2970e19fa227955307e8fe2d055824a2aa3ca2600b933ceb63a010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000003773b05d2e2660498c8d407a1d6223423c26aa08b9b3656af94d78b861fba22f0100000000000000be177f23c0065f9135b057181534bbf09c5f9daecce6c99aa2e9267202fc4f900100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e96010000000000000039712f967c4e06d284d6da4735cf2823c1f770674b668f7bc896071c3fd41eda010000000000000046f540d46498b7e5c53d650c28a682f61a769919fe3a3554114cde720c05ebea01000000000000009a5df54f5051a3f41be540c0eb233df31dd82a3acb755a3b42eafb6ca47b06d201000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000d9b96ab14d54cf0093b00b5bb592a6ea6036f844bf7eaa3b5181d0764e1724b901000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000fd2fe2f117d597b29474a740ec767fe51cec93544d00e34269b78ddb31225f3b0100000000000000a74ff082093aff29e9a0d9adeb6e6df264b39c15ef1a82bf942e8ba76872bac40100000000000000a9413b5f6af8458b220e467cfa30ec635e0690a843bae76b0c25a387238e45c701000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000c2e6a39d423f82b034e5370932f02653ee45254ced3ec2094640508e3d04d91b0100000000000000d0071dcdd61d5f4df542a2978fc2acd51996ab0abccddf4d64732fc7b83c073101000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000606f8c9ce630a1ce30fc7b7108fae524bc47bbbb2c838a985d9a651be4fa03450100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000baf0112f613aa6fff341d67decad56d1c5744a3ebb8e3577e82febbf3535b3fe01000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000000442cfb3cd38604b2a5251638e9fa7ee6b05968c731f393b78a6604e0072b09f01000000000000007af0706d921a331b5c1f957a8d1decf15aa0e3377a80d72107693afd8614ef8f0100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc01000000000000003ded8aac5210831cbcc4d0cf1f96f2c711afc90a6f6f35a4ffb766be1dfbaee30100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000f56f5b3de4f46bcde88569888783fd60646806795807edb1e04ec3dff85ff3e10100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000005e0fad9f1e6837994babd7d55b2d4079af785ec48568cd1c4efd60ea28162e8e01000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe93010000000000000029a6535bac723c2f711e590c67f0bd60843cf7888eebca46025ae57f5ca1d9290100000000000000b5f8f28250bc934f684d57ce969bc3171e5a92085ea3fc4f5cbd3616cb4c7c63010000000000000022edc626e6c76166af032395ade8b874ac872074c72e3e6a70c8f668993d19e80100000000000000ee73c2912d35fe8d3f5bd51303d89bbd8500cd12b3a17594ab3e9ac4cee922200100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f01000000000000003e6d39376bea51b81c57d4a308938c6552bea5433d6bed9f1ac3896cacbdc70d01000000000000004ace071bafa32176b1e916d9454f099b9306a2ad9efd86418bd83cd048935fec0100000000000000ac0ef45b1c0f242a4aeb0ef03a9c0d9e3ae2a4bee8cb4c35f0293bac4331e76501000000000000006bed5c36442ab221e4d825e3ef41e30bddd8bb3847153706d69d851e186092c101000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000b3772cbf76b589acf34786c7882bde8fbe77fd6474543ee882fdce09e50892410100000000000000e1c1327187f940cd73d5afb676b4b28399109aa6a6c3868707df1dc3d62a83820100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a010000000000000090517dbf339bac4cd01fcad403dd0803cb67a9b15bf024ce038eea2c7f2423040100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb1101000000000000007a92827270cfa82f16145a44f9bdd9ff5038ef1b665dd520a2e61db9749094960100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000fd2d8b8e265ca440581956a7e36b57eba685631193bc4fe0a2b638887ca5cc0b0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f0100000000000000e5f305cd6d930d41209036f066a86d3724aad2f388d354ac4979cc763c220a5601000000000000007ef02c62a02f0c18581cfb8ab7c2dcdff34e36a453a3700c568d61fdf9c8a7b4010000000000000045e03689170b9fc027db927a99842e2c13f9fcbd875a74e2b54a2663f3c23dfc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000007a03c321222b7f7b34946e44850798fee20b9112a64e3950398cce19064b8723010000000000000035db4f9ab121f213b695b982f50c47ac04a14c54214e831ed1bbef7b9542310c01000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a01000000000000001e8548bd6c863891e2d9dd01c56e5e28355dc309f568cacce63d6ea61010b8700100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000bfcc366ce0bfebc76ac157ed0814e2516786e48eb1a3313b5fe37283e9cf2c5a0100000000000000cafe2356af019d8b5f39c949b3dee71dd5356eb2655d819f485d0244e55b9fcd0100000000000000352738b28d7612806e53cb994ae9d0c04c29e66e74142b374149e9362d98070c0100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000e2d564796e2660ba1bf553a21581f82116f775002a0dc0f26439f54c660fd84d01000000000000003732b4c704a4568eeced68b4347500bf3e5be27d612ff5382aea88100995ce1d0100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f8010810100000000000000c149ee2bb1be4395301442de3b032c8596afa5588e1125258a172f837e8f0aa0010000000000000070603976fe118b79a53a29d112718649d8061b2a326a2809897ec904687df7a401000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000002667b3cc3064ffdc71758c12f2966407cdb1ac70e2cf972d547c688fd59080880100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce760100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb0100000000000000de186294778cc927cb2a24ade9ad165956f3586979f1ac5f3b4a16edd2674339010000000000000043a9a2915f377cd4943f602be38c3bd6ef39e91562c09f18fb672884b4bf8eab010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe01000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b630100000000000000f7bdbb5c598784ba157940b08b5c5aa967d0f3faf60da28b915650eb39afe47c01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000006c3829859c7b27da7f0528e6281a406cf713971a03fa4dbb4ea973ee33f7f3170100000000000000677358fc648638cbd854d2a009dd39b8508dd3047d0c5f13bb403a64d053ad030100000000000000645b81dc1769e34a815cc5682abd3c3b3ea60afa9705a5ff2908ad354b0f9ca4010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea0100000000000000e2cc4424464983ada824bbef5aaa8995e80ef1017c15ef3b13902599841637ba01000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000fd734da3c98d7d56f8b9cc92f389350f3b6de2fb5917d338fee9fd961978e2a30100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000084845f99ad8fe89b7aa136c30b71b791015e8801b1d42cbf9841a0b90e723aad0100000000000000ee145c84de0c536f9d5a7472fe520b20c036ebb714d5b4d51ff913b7cd69caae01000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d5615840100000000000000ea8c8bec277832ff4f31396f76d6117026cf73407bce46de9ccfd17c686ca11701000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df25224010000000000000016de137c03756dfabe67ce17e70158cf3d0ad00622b4ad02ed5ff16631f1c97901000000000000008873eb6d260a77ad37a779b9d6c87eabde1fb0be17ddfbd8c8bef64200cdf0db01000000000000003f6aeb3ed0d67d71ee11a1c2e1ed66da77abd8cc8c0f4d995d64fe4ec873684701000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe7667010000000000000012aa455c35356255f9ba286193962f3bc23f7fff565c1995ac21015bd946fe6e0100000000000000447a00c24ddef95382f0fce94aec3aefb0e8f0cb1a635bfb05faa030d63c1130010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd1010000000000000054c3e0cec10a6cade078942e7f79b242fc4a2eb1988eeb0ee6d92c8653a29c960100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a001000000000000006b5487e03da258c7c92add43a1b5a99a0b40f8316e758585150877bb6fe88b320100000000000000af470f2d66661e59ad85302877ba095309d859cea3d5086c5c184030c8f5bdf301000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000004485615186ae8ad33aff337594a7f8325d3a50201ee04320fb1dd2eab9643d1601000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b30100000000000000e81206b483fdcf1fe42145f27d1efb8178a57ee24b196285374037da2a53b32301000000000000001ac44a1e32a5aabcb2bd23d6586da06e7d97d49a36cd670acaee574df1b912210100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d9010000000000000056563474f25233f9c2297766972922fd80f4dba402594c9ce82af58a9d0f9d07010000000000000085cf5e7395cdb93f9c9ba72075847443f040f22f440f0e868fbb5de594642dee01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000db106e27c5b78f1a0d19e0abb47b4666c54906c5539c8596b43d36dc885e927a0100000000000000b5e0d0ae74b0ac76c0195fecca9660a241920ba97cdc5a247c7e941ee1f5407c010000000000000040d167daa1c3ef5c6b1982223618d955926af5b7670f6c1e732f4493fcd349ed0100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000080629b67e7b2d6f57e9da3cb29cc8463a65d125039628124784f944b94c29e88010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c2130355480100000000000000b7d7f71a55b0e39262ab8d33e88e308d0ff39a79eae810ac8ec9cb8e37151fde010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000095885aaa49faca9622ac9eab12f2efa509361511039934ffeff93eb948eb517d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000c222ba3fffec09b85f1992db2dcaeaa48205903219789369855e347fd188144b010000000000000012c277c98d0593ec3d0f9d01e8ce08f67813197b67fe96d2be7c5ba6481515df01000000000000009606000000000000000114b0160100591a00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e11501930600000000000033101601940600000000000066481601950600000000000099801601" + "babeEpochChanges": "0x048524e13c03dabdfcd58bf3a783eb3f8af9f3beb1f83bf64f1edc5661ddbdcc76f44d260101f382f41000000000538cf4100000000004e49e35131f3b10c66f75045405b11e5742a400edb67f0fde4bcfc7a4d70839d94857260101538cf41000000000b395f41000000000048974cd9ebacb99e3425c068b00ff967287bafef687494d06c649cb83d42311079460260101b395f41000000000139ff4100000000000000c8524e13c03dabdfcd58bf3a783eb3f8af9f3beb1f83bf64f1edc5661ddbdcc76f44d260101891f000000000000f382f410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000fd91e3922a7945adc06dd75738a64c9a2d79d223fc60ce9fa68f247ce34a8ee401000000000000000400000000000000028974cd9ebacb99e3425c068b00ff967287bafef687494d06c649cb83d423110794602601018b1f000000000000b395f410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000551fc1f1f1606e53e38c244789213966e68960a5c2957ac8a3568a3fcd7369490100000000000000040000000000000002e49e35131f3b10c66f75045405b11e5742a400edb67f0fde4bcfc7a4d70839d948572601018a1f000000000000538cf410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000e281b9e781d0d122cad53deec70cd1880eb29c2a034201c2821014b6fe84d1ff0100000000000000040000000000000002", + "babeFinalizedBlockWeight": 4816932, + "finalizedBlockHeader": "0xf292bdff983836444cd51784c192c3925d734c7936f309581c817f9f74c51d380e8b9904f4fb3330f79ddda3ffbbce59c7b93774122fe32463d7de711ffc820fa69508525cb2b1a9b578fa9e8dd457f2c904649d00557bb1724bb8d7b313e9a1211eccdd080642414245b501015c000000878ef41000000000c4d48a2a2e5364af41319264fee671a26023eebdb6d98a1687466dc44e8fb239263e94e02749bd0e7c63a41103dd01d531405bf5e18d535a9553bd14816aa7047c2019652e0c689625fb677b0f43de704da3daa485ad1d8a0a1b3b754bdcab0e054241424501017659dc71591dfa2561e074163f1aca684a515928b07bbf63f300beabd8d8b4720ee75fa0a487f1e7ef90840e0caaed103e489eec9a1a3b4f70aff8c76e6e6982", + "grandpaAuthoritySet": "0xa5042f8da08bb2421ef844015c3b2ea23464fc66a9dcb4a2215fe0241f892d19afc50100000000000000fff437ff18629bf1490e5c9b3ec6f1515d46bb9b2aeaa6e39e36611f2479b50d01000000000000000334021ff54e46fb7da4bd257cf113519a0c7ee4a2251b66fe48466fed5853520100000000000000d95f04dc8ea4ac05deea7077457f0406fdd152bd03a7480e7d0de0983b959d3c010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc687601000000000000005b27660cd4c375f2654c6d923b29fd8abbab7e96ee040c79598be14f832f56ca0100000000000000d3cc98d4ef2959052d0850c5803739a81b4fb31196cb8602c45e19a7a56977cf0100000000000000577f3db377f6b69115658f17f32323071b8e0c67695057353d0ad9ad2d8eea1a010000000000000057ae0c85ebaf333a6ec3251f577cab910cce072f238d1e50046322b83bbc0dd50100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc001000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e01000000000000007cd50f6921fade39653f847bddd48360668004225081a6a3ad7997f78debd34c0100000000000000f1578b8007e34ba6b1c4c480a8249758eaa356a6e5b1be0efbe5c35e802fe3cf0100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000053352e16d2a27fb3525d5d8750d6ad7f46b303a45e434a409ac727d5cb80432b0100000000000000f2c819e8ed3ae8aab35a7edb7d21cabc889eb5928dd6a5281b42f3b00f808e1b010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000c9a741ab82126c4d4eaa6a758cfc1209bbd7b29330e89ccd97fb62ae567c8d4301000000000000009b94bc45bf79bb33f70430c82880456cd7bd5fb3ea131c1b26d493d01c5fe7100100000000000000a1a9debad5e4afb076cf293c2c797f0b5901ffdb8bd01611235e762411a0db3901000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e40501000000000000001165cac368b7336c0dfd184027e03ae2945761538b05365611ad4d731f4917fc0100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000c650b1a6b34347bd80ed06b48aa4ae1a33adaa507e8ac23bf6c6b94223b63b9d01000000000000000d2892cca10a62c24727ffacba6a57b1a35b0dea5c9d82d7d6c971e2335ced7001000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000b9186b95c90d2d00a31e7c68066bd37d73408271762604e3608e2f2c983f830901000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd7501000000000000001ba602a293ccdb7a77042fb486c6e010d48b13dff2bef0a26c53637312aac7f701000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce80100000000000000ba8180cbc0dceb098ee6b22fe89978bf92ebf196a280470b1501bc2138ec02c70100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a30100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000950459187f6d368ccf940574b1fad05f88aea3303858daaae072443b219410a90100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a010000000000000069a6c84df1d25f855b91040e113a5557da8a89d80644ae7bf8d0ba416ab89b6d0100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad390100000000000000997b35c2de1a7ee0cd6744eea2c589ff487059544539bb099ceb6fe78150b68f0100000000000000f8eb309ab851e8f98aa4bd68138a67dc4a435331598079969053a5325b874a51010000000000000059bba625d971d505a9c7d7c2f3ad69203e69e3e5e1fc1e4905fae7703fa19e030100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce4010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000082a1428bcd525a2e77b8f5fb89c73e5fe1261e96e93b383dd2d66767c855c8f001000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb059732620100000000000000be0a28e5615d9ce3b866b5cf0babf6a7f0e6de06119463382e715b47c89853e40100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000007509d9697cb54f627f47b25e80f46f5d1bf483a9cab5f52df69e1a8f612e486f0100000000000000f3b1c0e43606bd49bc84e403db685b577e898b5f7c5db9052bdc3dacf38dc7ad01000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000f9e59cf53bdc07c716fda737a754e45e4aa53860054ce1511a4e8abbf1e366070100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b010000000000000099f58256a4a5d6cf5d99f0cdebbcbe1477db461457647631cd21ca7f3120da6001000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f86e50733ff2142e88fe5b898087b4b1d6a3250064a439097f8995069624adef0100000000000000bba7a1ccb67a410afedb8e033ad69c39e7c554ce0ce6584b0e6688bae30f7d69010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000003a9d3ecc0b675f0c6ffb45637d48c61fbeeb5cc48dbd1422acb94e7dbc9f001a01000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000005a16e068132523621b4e714999d3d856f2728d4667ce954a68b1fd6876bd962f0100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa01000000000000006180a56305eff3231eebe895b44751f075f826684ef42a862f11e79c3e689cd301000000000000004a6b88e9110bc8184be0e612404f4781cbeae67cd3fa510668cb21748e750e880100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b979820100000000000000df11dd2be629ba8bf3ef7b4b0478a91bba5c7f928adcf28f3d00ce1f27410ff60100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000f71fca8770328d06e9a45e650e5f58c15feb8ec77ca2dce397490bedfa37db4801000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000005b78368482b0584326a9c0176949523c03ab1446a8aa021701aa9837ccf04fc010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000a571c0788c864df547070c9d9a1991a9664ae7466bd83495a8ae20dbe6bff6980100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a01000000000000004d4a140145f83598fc5a3839260723176f643ae286ff7b2fc460b897fb050a4501000000000000007e15c89cc954f1ddd6a5f2e9f482c1143f5b7b4ba406ed1264fd25a999f223f20100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded82701000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a01000000000000004659b8114500937a2db0c810e194610c582865305e141d04e52ee989b80edd87010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d90100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f01000000000000008da8d5949a791c5ca60438cb48670d0ee22dcd4ed87a56b5056fa171f38148220100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef0100000000000000c0444bc7cff2374b76ba49e5ce25b632b0db77f08f6c40799077ce3f5b035f3f0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d01000000000000004c51b84496e533a7f1bb2b806f3733a7f0a48543976d0a4e5410e831f93e04170100000000000000615d64d17a182504db609d14dc6a45a109817cfaaad1608b4c48382bee48d3780100000000000000155763a153e0c02b2eef1d8a9cd8a50a9eaac9d3af7ad1e559b1e2320b521e1c01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e83010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000003773b05d2e2660498c8d407a1d6223423c26aa08b9b3656af94d78b861fba22f01000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e960100000000000000ddb8ed355e1389d3a12e9e55fb7723e89bc5020144bd832e02c47f7f672c9f14010000000000000039712f967c4e06d284d6da4735cf2823c1f770674b668f7bc896071c3fd41eda01000000000000000d4c26111d95a762e990acd0a15417be572ee390c7b9dd91f5e7ddd4a015f1bb01000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000d9b96ab14d54cf0093b00b5bb592a6ea6036f844bf7eaa3b5181d0764e1724b901000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000fd2fe2f117d597b29474a740ec767fe51cec93544d00e34269b78ddb31225f3b0100000000000000a74ff082093aff29e9a0d9adeb6e6df264b39c15ef1a82bf942e8ba76872bac401000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000a4f516aea3a92e379a03a2a9f9fcc757af022ce3572b00ffff21151fda41e79601000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000baf0112f613aa6fff341d67decad56d1c5744a3ebb8e3577e82febbf3535b3fe01000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000000442cfb3cd38604b2a5251638e9fa7ee6b05968c731f393b78a6604e0072b09f01000000000000007af0706d921a331b5c1f957a8d1decf15aa0e3377a80d72107693afd8614ef8f0100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000f5df4d76a1df9b6a7940a07f23b909a0e03feaa0cc84743674678c7a1d5412760100000000000000f56f5b3de4f46bcde88569888783fd60646806795807edb1e04ec3dff85ff3e10100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd30100000000000000a85cec5e853b5891796fd58cdddc4c6c017140db44777c9a1e94c0d757a2e51f01000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc8301000000000000005e0fad9f1e6837994babd7d55b2d4079af785ec48568cd1c4efd60ea28162e8e01000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe93010000000000000029a6535bac723c2f711e590c67f0bd60843cf7888eebca46025ae57f5ca1d92901000000000000004b3210303cc88f1495bf5a42c50dc7c51c8bc1db98bf3722b894462346e9221d01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000530f022bda69f1ea2ee55570057ca38fda313213b9c02a7c6560ee53e40b108501000000000000009bde702d9265dd3f62a8c9bd36d5e2f4e0dfb91ff812885cf2497eee667660950100000000000000ac0ef45b1c0f242a4aeb0ef03a9c0d9e3ae2a4bee8cb4c35f0293bac4331e76501000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000dfb56f8dbbc94ce17a85087b4dce709c5bd4289650c0eed35f244a21c91c1f1b010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000a4984d27a16bb575649bc55d16f927d12beb0b5373f8db1aac9f2f88a721628d0100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a010000000000000090517dbf339bac4cd01fcad403dd0803cb67a9b15bf024ce038eea2c7f24230401000000000000008dc1439b28d488419535c2fea9c821023f7bce423fa02d9f42e60c07c3d6ab560100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb1101000000000000007a92827270cfa82f16145a44f9bdd9ff5038ef1b665dd520a2e61db9749094960100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000012e9b2bfe3d95c70fe8036a6cc8f677d67c9c65724aef87cc2a2eba5555d81070100000000000000e5f305cd6d930d41209036f066a86d3724aad2f388d354ac4979cc763c220a5601000000000000007ef02c62a02f0c18581cfb8ab7c2dcdff34e36a453a3700c568d61fdf9c8a7b40100000000000000eea623df46d1f301cf567672971c6895edf7316a5639dcee698730641950fb8b010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000007a03c321222b7f7b34946e44850798fee20b9112a64e3950398cce19064b8723010000000000000035db4f9ab121f213b695b982f50c47ac04a14c54214e831ed1bbef7b9542310c01000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000316d5dbafd16258b7077d46a3dc32c46986a56a3eb095094d3f8fdd6acbf91cf01000000000000006a5dcdf2c3598c00d31a010dece5bf744f203856712531b07a31babcf06d09e30100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000e2d564796e2660ba1bf553a21581f82116f775002a0dc0f26439f54c660fd84d0100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000008fc9be34cc95e087c83cb6f86e2d2b7a22a7015558e8fcb1260740bcbd346d630100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb0100000000000000de186294778cc927cb2a24ade9ad165956f3586979f1ac5f3b4a16edd2674339010000000000000043a9a2915f377cd4943f602be38c3bd6ef39e91562c09f18fb672884b4bf8eab010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc6010000000000000010caeb8c977dfd960736b1c5dd8840cd623b044fccf4054bb7854a53d5cf26610100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe0100000000000000f442190c846bbf5764bda138c075360be77a8fcb27ad889adbffdc7b881a33f601000000000000004a9ff9736a4c0907996106f8de8151f1a98f4f3c7dd21fcb85829d6a0e42063d0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b630100000000000000f7bdbb5c598784ba157940b08b5c5aa967d0f3faf60da28b915650eb39afe47c0100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000006c3829859c7b27da7f0528e6281a406cf713971a03fa4dbb4ea973ee33f7f3170100000000000000677358fc648638cbd854d2a009dd39b8508dd3047d0c5f13bb403a64d053ad03010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea0100000000000000e2cc4424464983ada824bbef5aaa8995e80ef1017c15ef3b13902599841637ba01000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000fd734da3c98d7d56f8b9cc92f389350f3b6de2fb5917d338fee9fd961978e2a30100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000084845f99ad8fe89b7aa136c30b71b791015e8801b1d42cbf9841a0b90e723aad010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d5615840100000000000000ea8c8bec277832ff4f31396f76d6117026cf73407bce46de9ccfd17c686ca11701000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000002299bac5f0a0570861899eed87f7f1faf65d74bb8120b8f498a6af503762c37901000000000000008873eb6d260a77ad37a779b9d6c87eabde1fb0be17ddfbd8c8bef64200cdf0db01000000000000008600604f01fa82a628ce3cb883cc6ff391cc6b7a348f3fd0d90b6657461013260100000000000000e08a65617167ad46c5217d67de29bf79e1f8f417e0d6d8e64bed10ae13312d8401000000000000003f6aeb3ed0d67d71ee11a1c2e1ed66da77abd8cc8c0f4d995d64fe4ec873684701000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe766701000000000000000cfb71d3e8d694979c35bbfce53fd595f2df0f1679ce32799c1774a22222433d010000000000000012aa455c35356255f9ba286193962f3bc23f7fff565c1995ac21015bd946fe6e0100000000000000447a00c24ddef95382f0fce94aec3aefb0e8f0cb1a635bfb05faa030d63c1130010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a001000000000000006b5487e03da258c7c92add43a1b5a99a0b40f8316e758585150877bb6fe88b3201000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000004485615186ae8ad33aff337594a7f8325d3a50201ee04320fb1dd2eab9643d1601000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b30100000000000000e81206b483fdcf1fe42145f27d1efb8178a57ee24b196285374037da2a53b32301000000000000001ac44a1e32a5aabcb2bd23d6586da06e7d97d49a36cd670acaee574df1b912210100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d9010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000db106e27c5b78f1a0d19e0abb47b4666c54906c5539c8596b43d36dc885e927a0100000000000000b5e0d0ae74b0ac76c0195fecca9660a241920ba97cdc5a247c7e941ee1f5407c01000000000000001450fb02aedbbfce8ec62c79767acd6b9e881390ad868d07713bb1d41d9c74b90100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a0100000000000000f1d8f202f4766a1eddc43c209636d25771988a0058ae1e16797219337771307f010000000000000080629b67e7b2d6f57e9da3cb29cc8463a65d125039628124784f944b94c29e8801000000000000008a92eb6852ec8ed6a1721d33f6f671e488fb995c3fa36c5e55400721bcacef75010000000000000080a35afdc67bbec0e3e5ef1fa569249264c54d74df218b46e1dc0fd585149f45010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c213035548010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000095885aaa49faca9622ac9eab12f2efa509361511039934ffeff93eb948eb517d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a2366010000000000000012c277c98d0593ec3d0f9d01e8ce08f67813197b67fe96d2be7c5ba6481515df010000000000000008070000000000000001c362260100211c00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b2601070700000000000048572601" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index 2f58b0fd9eed2bea0d32d6bdba683fcf7ef29084..27dd4fac619979b55468631f95934b23d2288f46 100644 GIT binary patch delta 46767 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

Q=-(Dg8(W!PCe?y`4?nkQVYbF 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 delta 35833 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 delta 6685 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 diff --git a/scripts/artifacts/src/main.rs b/scripts/artifacts/src/main.rs index 0b5d247735..17ca76cb1a 100644 --- a/scripts/artifacts/src/main.rs +++ b/scripts/artifacts/src/main.rs @@ -10,7 +10,7 @@ use substrate_runner::SubstrateNode; /// Run with `cargo run --bin artifacts` from the root of the repository. fn main() { let mut node_builder = SubstrateNode::builder(); - node_builder.binary_paths(["substrate-node", "substrate"]); + node_builder.polkadot(); // Spawn the node and retrieve a ws URL to it: let proc = node_builder @@ -37,13 +37,13 @@ fn main() { // Generate a metadata file that only contains a few pallets that we need for our examples. run_cmd( - r#"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "Balances,Staking,System,Multisig,Timestamp,ParaInherent""#, + "cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets Balances,Staking,System,Multisig,Timestamp,ParaInherent", Some("artifacts/polkadot_metadata_small.scale"), ); // Generate a metadata file that contains no pallets run_cmd( - r#"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets """#, + "cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets \"\"", Some("artifacts/polkadot_metadata_tiny.scale"), ); diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index 1e3fd1092b..03502244c3 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -6,7 +6,7 @@ pub mod api { mod root_mod { pub use super::*; } - pub static PALLETS: [&str; 65usize] = [ + pub static PALLETS: [&str; 67usize] = [ "System", "Babe", "Timestamp", @@ -21,13 +21,13 @@ pub mod api { "MmrLeaf", "Session", "Grandpa", - "ImOnline", "AuthorityDiscovery", "Treasury", "ConvictionVoting", "Referenda", "FellowshipCollective", "FellowshipReferenda", + "Origins", "Whitelist", "Claims", "Utility", @@ -58,14 +58,16 @@ pub mod api { "ParasDisputes", "ParasSlashing", "MessageQueue", - "ParaAssignmentProvider", "OnDemandAssignmentProvider", "ParachainsAssignmentProvider", + "CoretimeAssignmentProvider", "Registrar", "Slots", "Auctions", "Crowdloan", + "Coretime", "XcmPallet", + "IdentityMigrator", "ParasSudoWrapper", "AssignedSlots", "ValidatorManager", @@ -1023,9 +1025,10 @@ pub mod api { "on_chain_votes", types::OnChainVotes {}, [ - 8u8, 253u8, 248u8, 13u8, 221u8, 83u8, 199u8, 65u8, 180u8, 193u8, 232u8, - 179u8, 56u8, 186u8, 72u8, 128u8, 27u8, 168u8, 177u8, 82u8, 194u8, - 139u8, 78u8, 32u8, 147u8, 67u8, 27u8, 252u8, 118u8, 60u8, 74u8, 31u8, + 158u8, 98u8, 68u8, 85u8, 65u8, 186u8, 211u8, 5u8, 16u8, 63u8, 34u8, + 85u8, 16u8, 114u8, 115u8, 174u8, 154u8, 127u8, 176u8, 205u8, 12u8, + 231u8, 3u8, 170u8, 102u8, 223u8, 25u8, 130u8, 225u8, 214u8, 98u8, + 255u8, ], ) } @@ -1149,9 +1152,9 @@ pub mod api { "session_executor_params", types::SessionExecutorParams { session_index }, [ - 207u8, 66u8, 10u8, 104u8, 146u8, 219u8, 75u8, 157u8, 93u8, 224u8, - 215u8, 13u8, 255u8, 62u8, 134u8, 168u8, 185u8, 101u8, 39u8, 78u8, 98u8, - 44u8, 129u8, 38u8, 48u8, 244u8, 103u8, 205u8, 66u8, 121u8, 18u8, 247u8, + 94u8, 35u8, 29u8, 188u8, 247u8, 116u8, 165u8, 43u8, 248u8, 76u8, 21u8, + 237u8, 26u8, 25u8, 105u8, 27u8, 24u8, 245u8, 97u8, 25u8, 47u8, 118u8, + 98u8, 231u8, 27u8, 76u8, 172u8, 207u8, 90u8, 103u8, 52u8, 168u8, ], ) } @@ -1296,6 +1299,44 @@ pub mod api { ], ) } + #[doc = " Get node features."] + #[doc = " This is a staging method! Do not use on production runtimes!"] + pub fn node_features( + &self, + ) -> ::subxt::runtime_api::Payload< + types::NodeFeatures, + types::node_features::output::Output, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "node_features", + types::NodeFeatures {}, + [ + 94u8, 110u8, 38u8, 62u8, 66u8, 234u8, 216u8, 228u8, 36u8, 17u8, 33u8, + 56u8, 184u8, 122u8, 34u8, 254u8, 46u8, 62u8, 107u8, 227u8, 3u8, 126u8, + 220u8, 142u8, 92u8, 226u8, 123u8, 236u8, 34u8, 234u8, 82u8, 80u8, + ], + ) + } + #[doc = " Approval voting configuration parameters"] + pub fn approval_voting_params( + &self, + ) -> ::subxt::runtime_api::Payload< + types::ApprovalVotingParams, + types::approval_voting_params::output::Output, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "approval_voting_params", + types::ApprovalVotingParams {}, + [ + 89u8, 130u8, 95u8, 58u8, 124u8, 176u8, 43u8, 109u8, 222u8, 178u8, + 241u8, 177u8, 242u8, 32u8, 84u8, 22u8, 252u8, 178u8, 168u8, 17u8, 38u8, + 249u8, 25u8, 229u8, 75u8, 119u8, 150u8, 112u8, 144u8, 118u8, 189u8, + 253u8, + ], + ) + } } pub mod types { use super::runtime_types; @@ -1920,6 +1961,46 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct DisabledValidators {} + pub mod node_features { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >; + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NodeFeatures {} + pub mod approval_voting_params { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = + runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams; + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApprovalVotingParams {} } } pub mod beefy_api { @@ -3485,9 +3566,6 @@ pub mod api { pub fn grandpa(&self) -> grandpa::constants::ConstantsApi { grandpa::constants::ConstantsApi } - pub fn im_online(&self) -> im_online::constants::ConstantsApi { - im_online::constants::ConstantsApi - } pub fn treasury(&self) -> treasury::constants::ConstantsApi { treasury::constants::ConstantsApi } @@ -3564,6 +3642,9 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::constants::ConstantsApi { crowdloan::constants::ConstantsApi } + pub fn coretime(&self) -> coretime::constants::ConstantsApi { + coretime::constants::ConstantsApi + } pub fn assigned_slots(&self) -> assigned_slots::constants::ConstantsApi { assigned_slots::constants::ConstantsApi } @@ -3597,6 +3678,9 @@ pub mod api { pub fn offences(&self) -> offences::storage::StorageApi { offences::storage::StorageApi } + pub fn historical(&self) -> historical::storage::StorageApi { + historical::storage::StorageApi + } pub fn beefy(&self) -> beefy::storage::StorageApi { beefy::storage::StorageApi } @@ -3612,8 +3696,8 @@ pub mod api { pub fn grandpa(&self) -> grandpa::storage::StorageApi { grandpa::storage::StorageApi } - pub fn im_online(&self) -> im_online::storage::StorageApi { - im_online::storage::StorageApi + pub fn authority_discovery(&self) -> authority_discovery::storage::StorageApi { + authority_discovery::storage::StorageApi } pub fn treasury(&self) -> treasury::storage::StorageApi { treasury::storage::StorageApi @@ -3714,14 +3798,16 @@ pub mod api { pub fn message_queue(&self) -> message_queue::storage::StorageApi { message_queue::storage::StorageApi } - pub fn para_assignment_provider(&self) -> para_assignment_provider::storage::StorageApi { - para_assignment_provider::storage::StorageApi - } pub fn on_demand_assignment_provider( &self, ) -> on_demand_assignment_provider::storage::StorageApi { on_demand_assignment_provider::storage::StorageApi } + pub fn coretime_assignment_provider( + &self, + ) -> coretime_assignment_provider::storage::StorageApi { + coretime_assignment_provider::storage::StorageApi + } pub fn registrar(&self) -> registrar::storage::StorageApi { registrar::storage::StorageApi } @@ -3746,9 +3832,6 @@ pub mod api { pub fn state_trie_migration(&self) -> state_trie_migration::storage::StorageApi { state_trie_migration::storage::StorageApi } - pub fn root_testing(&self) -> root_testing::storage::StorageApi { - root_testing::storage::StorageApi - } pub fn sudo(&self) -> sudo::storage::StorageApi { sudo::storage::StorageApi } @@ -3779,9 +3862,6 @@ pub mod api { pub fn grandpa(&self) -> grandpa::calls::TransactionApi { grandpa::calls::TransactionApi } - pub fn im_online(&self) -> im_online::calls::TransactionApi { - im_online::calls::TransactionApi - } pub fn treasury(&self) -> treasury::calls::TransactionApi { treasury::calls::TransactionApi } @@ -3892,9 +3972,15 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::calls::TransactionApi { crowdloan::calls::TransactionApi } + pub fn coretime(&self) -> coretime::calls::TransactionApi { + coretime::calls::TransactionApi + } pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { xcm_pallet::calls::TransactionApi } + pub fn identity_migrator(&self) -> identity_migrator::calls::TransactionApi { + identity_migrator::calls::TransactionApi + } pub fn paras_sudo_wrapper(&self) -> paras_sudo_wrapper::calls::TransactionApi { paras_sudo_wrapper::calls::TransactionApi } @@ -3923,9 +4009,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 217u8, 170u8, 7u8, 110u8, 237u8, 43u8, 49u8, 116u8, 87u8, 190u8, 100u8, 30u8, - 165u8, 15u8, 56u8, 52u8, 43u8, 64u8, 243u8, 187u8, 213u8, 229u8, 138u8, 173u8, - 223u8, 202u8, 95u8, 218u8, 85u8, 15u8, 85u8, 240u8, + 159u8, 248u8, 20u8, 74u8, 93u8, 145u8, 235u8, 204u8, 107u8, 155u8, 56u8, 127u8, + 31u8, 147u8, 245u8, 22u8, 198u8, 239u8, 90u8, 246u8, 169u8, 84u8, 180u8, 252u8, + 22u8, 163u8, 134u8, 37u8, 147u8, 44u8, 109u8, 13u8, ] } pub mod system { @@ -4122,6 +4208,72 @@ pub mod api { const PALLET: &'static str = "System"; const CALL: &'static str = "remark_with_event"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::authorize_upgrade`]."] + pub struct AuthorizeUpgrade { + pub code_hash: authorize_upgrade::CodeHash, + } + pub mod authorize_upgrade { + use super::runtime_types; + pub type CodeHash = ::subxt::utils::H256; + } + impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + pub struct AuthorizeUpgradeWithoutChecks { + pub code_hash: authorize_upgrade_without_checks::CodeHash, + } + pub mod authorize_upgrade_without_checks { + use super::runtime_types; + pub type CodeHash = ::subxt::utils::H256; + } + impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgradeWithoutChecks { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade_without_checks"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + pub struct ApplyAuthorizedUpgrade { + pub code: apply_authorized_upgrade::Code, + } + pub mod apply_authorized_upgrade { + use super::runtime_types; + pub type Code = ::std::vec::Vec<::core::primitive::u8>; + } + impl ::subxt::blocks::StaticExtrinsic for ApplyAuthorizedUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "apply_authorized_upgrade"; + } } pub struct TransactionApi; impl TransactionApi { @@ -4260,6 +4412,56 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::authorize_upgrade`]."] + pub fn authorize_upgrade( + &self, + code_hash: types::authorize_upgrade::CodeHash, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "authorize_upgrade", + types::AuthorizeUpgrade { code_hash }, + [ + 4u8, 14u8, 76u8, 107u8, 209u8, 129u8, 9u8, 39u8, 193u8, 17u8, 84u8, + 254u8, 170u8, 214u8, 24u8, 155u8, 29u8, 184u8, 249u8, 241u8, 109u8, + 58u8, 145u8, 131u8, 109u8, 63u8, 38u8, 165u8, 107u8, 215u8, 217u8, + 172u8, + ], + ) + } + #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + pub fn authorize_upgrade_without_checks( + &self, + code_hash: types::authorize_upgrade_without_checks::CodeHash, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "authorize_upgrade_without_checks", + types::AuthorizeUpgradeWithoutChecks { code_hash }, + [ + 126u8, 126u8, 55u8, 26u8, 47u8, 55u8, 66u8, 8u8, 167u8, 18u8, 29u8, + 136u8, 146u8, 14u8, 189u8, 117u8, 16u8, 227u8, 162u8, 61u8, 149u8, + 197u8, 104u8, 184u8, 185u8, 161u8, 99u8, 154u8, 80u8, 125u8, 181u8, + 233u8, + ], + ) + } + #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + pub fn apply_authorized_upgrade( + &self, + code: types::apply_authorized_upgrade::Code, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "apply_authorized_upgrade", + types::ApplyAuthorizedUpgrade { code }, + [ + 232u8, 107u8, 127u8, 38u8, 230u8, 29u8, 97u8, 4u8, 160u8, 191u8, 222u8, + 156u8, 245u8, 102u8, 196u8, 141u8, 44u8, 163u8, 98u8, 68u8, 125u8, + 32u8, 124u8, 101u8, 108u8, 93u8, 211u8, 52u8, 0u8, 231u8, 33u8, 227u8, + ], + ) + } } } #[doc = "Event for the System pallet."] @@ -4396,6 +4598,30 @@ pub mod api { const PALLET: &'static str = "System"; const EVENT: &'static str = "Remarked"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An upgrade was authorized."] + pub struct UpgradeAuthorized { + pub code_hash: upgrade_authorized::CodeHash, + pub check_version: upgrade_authorized::CheckVersion, + } + pub mod upgrade_authorized { + use super::runtime_types; + pub type CodeHash = ::subxt::utils::H256; + pub type CheckVersion = ::core::primitive::bool; + } + impl ::subxt::events::StaticEvent for UpgradeAuthorized { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "UpgradeAuthorized"; + } } pub mod storage { use super::runtime_types; @@ -4481,6 +4707,11 @@ pub mod api { use super::runtime_types; pub type ExecutionPhase = runtime_types::frame_system::Phase; } + pub mod authorized_upgrade { + use super::runtime_types; + pub type AuthorizedUpgrade = + runtime_types::frame_system::CodeUpgradeAuthorization; + } } pub struct StorageApi; impl StorageApi { @@ -4770,9 +5001,10 @@ pub mod api { "Events", vec![], [ - 203u8, 185u8, 202u8, 46u8, 60u8, 247u8, 185u8, 43u8, 177u8, 237u8, - 118u8, 62u8, 238u8, 44u8, 3u8, 32u8, 190u8, 212u8, 99u8, 224u8, 24u8, - 233u8, 250u8, 1u8, 75u8, 204u8, 1u8, 179u8, 199u8, 201u8, 61u8, 228u8, + 250u8, 105u8, 172u8, 217u8, 228u8, 110u8, 176u8, 187u8, 176u8, 96u8, + 251u8, 246u8, 10u8, 91u8, 10u8, 130u8, 149u8, 248u8, 60u8, 2u8, 95u8, + 25u8, 249u8, 73u8, 160u8, 204u8, 142u8, 109u8, 77u8, 204u8, 159u8, + 218u8, ], ) } @@ -4947,6 +5179,27 @@ pub mod api { ], ) } + #[doc = " `Some` if a code upgrade has been authorized."] + pub fn authorized_upgrade( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::authorized_upgrade::AuthorizedUpgrade, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "AuthorizedUpgrade", + vec![], + [ + 165u8, 97u8, 27u8, 138u8, 2u8, 28u8, 55u8, 92u8, 96u8, 96u8, 168u8, + 169u8, 55u8, 178u8, 44u8, 127u8, 58u8, 140u8, 206u8, 178u8, 1u8, 37u8, + 214u8, 213u8, 251u8, 123u8, 5u8, 111u8, 90u8, 148u8, 217u8, 135u8, + ], + ) + } } } pub mod constants { @@ -5581,9 +5834,10 @@ pub mod api { "Initialized", vec![], [ - 137u8, 31u8, 4u8, 130u8, 35u8, 232u8, 67u8, 108u8, 17u8, 123u8, 26u8, - 96u8, 238u8, 95u8, 138u8, 208u8, 163u8, 83u8, 218u8, 143u8, 8u8, 119u8, - 138u8, 130u8, 9u8, 194u8, 92u8, 40u8, 7u8, 89u8, 53u8, 237u8, + 169u8, 217u8, 237u8, 78u8, 186u8, 202u8, 206u8, 213u8, 54u8, 85u8, + 206u8, 166u8, 22u8, 138u8, 236u8, 60u8, 211u8, 169u8, 12u8, 183u8, + 23u8, 69u8, 194u8, 236u8, 112u8, 21u8, 62u8, 219u8, 92u8, 131u8, 134u8, + 145u8, ], ) } @@ -7461,10 +7715,10 @@ pub mod api { "Holds", vec![], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -7486,10 +7740,10 @@ pub mod api { _0.borrow(), )], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -7979,6 +8233,92 @@ pub mod api { pub mod historical { use super::root_mod; use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod historical_sessions { + use super::runtime_types; + pub type HistoricalSessions = (::subxt::utils::H256, ::core::primitive::u32); + pub type Param0 = ::core::primitive::u32; + } + pub mod stored_range { + use super::runtime_types; + pub type StoredRange = (::core::primitive::u32, ::core::primitive::u32); + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::historical_sessions::HistoricalSessions, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "HistoricalSessions", + vec![], + [ + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, + ], + ) + } + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::historical_sessions::HistoricalSessions, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "HistoricalSessions", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, + ], + ) + } + #[doc = " The range of historical sessions we store. [first, last)"] + pub fn stored_range( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::stored_range::StoredRange, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "StoredRange", + vec![], + [ + 134u8, 32u8, 250u8, 13u8, 201u8, 25u8, 54u8, 243u8, 231u8, 81u8, 252u8, + 231u8, 68u8, 217u8, 235u8, 43u8, 22u8, 223u8, 220u8, 133u8, 198u8, + 218u8, 95u8, 152u8, 189u8, 87u8, 6u8, 228u8, 242u8, 59u8, 232u8, 59u8, + ], + ) + } + } + } } pub mod beefy { use super::root_mod; @@ -8639,9 +8979,10 @@ pub mod api { "set_keys", types::SetKeys { keys, proof }, [ - 50u8, 154u8, 235u8, 252u8, 160u8, 25u8, 233u8, 90u8, 76u8, 227u8, 22u8, - 129u8, 221u8, 129u8, 95u8, 124u8, 117u8, 117u8, 43u8, 17u8, 109u8, - 252u8, 39u8, 115u8, 150u8, 80u8, 38u8, 34u8, 62u8, 237u8, 248u8, 246u8, + 160u8, 137u8, 167u8, 56u8, 165u8, 202u8, 149u8, 39u8, 16u8, 52u8, + 173u8, 215u8, 250u8, 158u8, 78u8, 126u8, 236u8, 153u8, 173u8, 68u8, + 237u8, 8u8, 47u8, 77u8, 119u8, 226u8, 248u8, 220u8, 139u8, 68u8, 145u8, + 207u8, ], ) } @@ -8813,9 +9154,10 @@ pub mod api { "QueuedKeys", vec![], [ - 251u8, 240u8, 64u8, 86u8, 241u8, 74u8, 141u8, 38u8, 46u8, 18u8, 92u8, - 101u8, 227u8, 161u8, 58u8, 222u8, 17u8, 29u8, 248u8, 237u8, 74u8, 69u8, - 18u8, 16u8, 129u8, 187u8, 172u8, 249u8, 162u8, 96u8, 218u8, 186u8, + 123u8, 8u8, 241u8, 219u8, 141u8, 50u8, 254u8, 247u8, 130u8, 71u8, + 105u8, 18u8, 149u8, 204u8, 28u8, 104u8, 184u8, 6u8, 165u8, 31u8, 153u8, + 54u8, 235u8, 78u8, 48u8, 182u8, 83u8, 221u8, 243u8, 110u8, 249u8, + 212u8, ], ) } @@ -8859,9 +9201,10 @@ pub mod api { "NextKeys", vec![], [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, + 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, + 108u8, 240u8, 0u8, 15u8, 177u8, 220u8, 206u8, 94u8, 179u8, 41u8, 209u8, + 23u8, ], ) } @@ -8883,9 +9226,10 @@ pub mod api { _0.borrow(), )], [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, + 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, + 108u8, 240u8, 0u8, 15u8, 177u8, 220u8, 206u8, 94u8, 179u8, 41u8, 209u8, + 23u8, ], ) } @@ -9219,6 +9563,14 @@ pub mod api { pub type SetIdSession = ::core::primitive::u32; pub type Param0 = ::core::primitive::u64; } + pub mod authorities { + use super::runtime_types; + pub type Authorities = + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>; + } } pub struct StorageApi; impl StorageApi { @@ -9393,6 +9745,28 @@ pub mod api { ], ) } + #[doc = " The current list of authorities."] + pub fn authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::authorities::Authorities, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "Authorities", + vec![], + [ + 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, + 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, + 153u8, 234u8, 181u8, 252u8, 55u8, 198u8, 175u8, 55u8, 211u8, 105u8, + 85u8, + ], + ) + } } } pub mod constants { @@ -9452,198 +9826,31 @@ pub mod api { } } } - pub mod im_online { + pub mod authority_discovery { use super::root_mod; use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_im_online::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_im_online::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::heartbeat`]."] - pub struct Heartbeat { - pub heartbeat: heartbeat::Heartbeat, - pub signature: heartbeat::Signature, - } - pub mod heartbeat { - use super::runtime_types; - pub type Heartbeat = - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>; - pub type Signature = - runtime_types::pallet_im_online::sr25519::app_sr25519::Signature; - } - impl ::subxt::blocks::StaticExtrinsic for Heartbeat { - const PALLET: &'static str = "ImOnline"; - const CALL: &'static str = "heartbeat"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::heartbeat`]."] - pub fn heartbeat( - &self, - heartbeat: types::heartbeat::Heartbeat, - signature: types::heartbeat::Signature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "ImOnline", - "heartbeat", - types::Heartbeat { - heartbeat, - signature, - }, - [ - 41u8, 78u8, 115u8, 250u8, 94u8, 34u8, 215u8, 28u8, 33u8, 175u8, 203u8, - 205u8, 14u8, 40u8, 197u8, 51u8, 24u8, 198u8, 173u8, 32u8, 119u8, 154u8, - 213u8, 125u8, 219u8, 3u8, 128u8, 52u8, 166u8, 223u8, 241u8, 129u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_im_online::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A new heartbeat was received from `AuthorityId`."] - pub struct HeartbeatReceived { - pub authority_id: heartbeat_received::AuthorityId, - } - pub mod heartbeat_received { - use super::runtime_types; - pub type AuthorityId = - runtime_types::pallet_im_online::sr25519::app_sr25519::Public; - } - impl ::subxt::events::StaticEvent for HeartbeatReceived { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "HeartbeatReceived"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "At the end of the session, no offence was committed."] - pub struct AllGood; - impl ::subxt::events::StaticEvent for AllGood { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "AllGood"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "At the end of the session, at least one validator was found to be offline."] - pub struct SomeOffline { - pub offline: some_offline::Offline, - } - pub mod some_offline { - use super::runtime_types; - pub type Offline = ::std::vec::Vec<(::subxt::utils::AccountId32, ())>; - } - impl ::subxt::events::StaticEvent for SomeOffline { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "SomeOffline"; - } - } pub mod storage { use super::runtime_types; pub mod types { use super::runtime_types; - pub mod heartbeat_after { - use super::runtime_types; - pub type HeartbeatAfter = ::core::primitive::u32; - } pub mod keys { use super::runtime_types; pub type Keys = runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + runtime_types::sp_authority_discovery::app::Public, >; } - pub mod received_heartbeats { + pub mod next_keys { use super::runtime_types; - pub type ReceivedHeartbeats = ::core::primitive::bool; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::core::primitive::u32; - } - pub mod authored_blocks { - use super::runtime_types; - pub type AuthoredBlocks = ::core::primitive::u32; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::subxt::utils::AccountId32; + pub type NextKeys = + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::sp_authority_discovery::app::Public, + >; } } pub struct StorageApi; impl StorageApi { - #[doc = " The block number after which it's ok to send heartbeats in the current"] - #[doc = " session."] - #[doc = ""] - #[doc = " At the beginning of each session we set this to a value that should fall"] - #[doc = " roughly in the middle of the session duration. The idea is to first wait for"] - #[doc = " the validators to produce a block in the current session, so that the"] - #[doc = " heartbeat later on will not be necessary."] - #[doc = ""] - #[doc = " This value will only be used as a fallback if we fail to get a proper session"] - #[doc = " progress estimate from `NextSessionRotation`, as those estimates should be"] - #[doc = " more accurate then the value we calculate for `HeartbeatAfter`."] - pub fn heartbeat_after( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::heartbeat_after::HeartbeatAfter, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "HeartbeatAfter", - vec![], - [ - 36u8, 179u8, 76u8, 254u8, 3u8, 184u8, 154u8, 142u8, 70u8, 104u8, 44u8, - 244u8, 39u8, 97u8, 31u8, 31u8, 93u8, 228u8, 185u8, 224u8, 13u8, 160u8, - 231u8, 210u8, 110u8, 143u8, 116u8, 29u8, 0u8, 215u8, 217u8, 137u8, - ], - ) - } - #[doc = " The current set of keys that may issue a heartbeat."] + #[doc = " Keys of the current authority set."] pub fn keys( &self, ) -> ::subxt::storage::address::Address< @@ -9654,7 +9861,7 @@ pub mod api { (), > { ::subxt::storage::address::Address::new_static( - "ImOnline", + "AuthorityDiscovery", "Keys", vec![], [ @@ -9665,184 +9872,29 @@ pub mod api { ], ) } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter( + #[doc = " Keys of the next authority set."] + pub fn next_keys( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - types::received_heartbeats::ReceivedHeartbeats, - (), - (), + types::next_keys::NextKeys, ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", + "AuthorityDiscovery", + "NextKeys", vec![], [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter1( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::received_heartbeats::ReceivedHeartbeats, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats( - &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::received_heartbeats::ReceivedHeartbeats, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::authored_blocks::AuthoredBlocks, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter1( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::authored_blocks::AuthoredBlocks, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks( - &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::authored_blocks::AuthoredBlocks, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, + 171u8, 107u8, 15u8, 108u8, 125u8, 102u8, 193u8, 240u8, 127u8, 160u8, + 53u8, 1u8, 208u8, 36u8, 134u8, 4u8, 216u8, 26u8, 156u8, 143u8, 154u8, + 194u8, 153u8, 199u8, 46u8, 211u8, 153u8, 222u8, 244u8, 4u8, 165u8, 2u8, ], ) } } } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " A configuration for base priority of unsigned transactions."] - #[doc = ""] - #[doc = " This is exposed so that it can be tuned for particular runtime, when"] - #[doc = " multiple pallets send unsigned transactions."] - pub fn unsigned_priority( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( - "ImOnline", - "UnsignedPriority", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, - ], - ) - } - } - } - } - pub mod authority_discovery { - use super::root_mod; - use super::runtime_types; } pub mod treasury { use super::root_mod; @@ -10001,7 +10053,7 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; pub type ValidFrom = ::core::option::Option<::core::primitive::u32>; } impl ::subxt::blocks::StaticExtrinsic for Spend { @@ -10181,10 +10233,10 @@ pub mod api { valid_from, }, [ - 124u8, 75u8, 215u8, 13u8, 48u8, 105u8, 201u8, 35u8, 199u8, 228u8, 38u8, - 229u8, 147u8, 255u8, 237u8, 249u8, 114u8, 154u8, 129u8, 209u8, 177u8, - 17u8, 70u8, 107u8, 74u8, 175u8, 244u8, 132u8, 206u8, 24u8, 224u8, - 156u8, + 127u8, 68u8, 115u8, 140u8, 122u8, 90u8, 253u8, 105u8, 230u8, 137u8, + 104u8, 130u8, 221u8, 123u8, 49u8, 126u8, 247u8, 80u8, 12u8, 4u8, 223u8, + 218u8, 187u8, 192u8, 61u8, 221u8, 46u8, 211u8, 71u8, 196u8, 55u8, + 237u8, ], ) } @@ -10477,7 +10529,7 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; pub type ValidFrom = ::core::primitive::u32; pub type ExpireAt = ::core::primitive::u32; } @@ -10615,7 +10667,7 @@ pub mod api { pub type Spends = runtime_types::pallet_treasury::SpendStatus< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, ::core::primitive::u128, - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, ::core::primitive::u32, ::core::primitive::u64, >; @@ -10772,10 +10824,10 @@ pub mod api { "Spends", vec![], [ - 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, - 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, - 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, - 5u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } @@ -10797,10 +10849,10 @@ pub mod api { _0.borrow(), )], [ - 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, - 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, - 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, - 5u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } @@ -11698,10 +11750,9 @@ pub mod api { enactment_moment, }, [ - 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, - 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, - 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, - 113u8, 69u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } @@ -12330,9 +12381,10 @@ pub mod api { "ReferendumInfoFor", vec![], [ - 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, - 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, - 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, ], ) } @@ -12354,9 +12406,10 @@ pub mod api { _0.borrow(), )], [ - 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, - 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, - 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, ], ) } @@ -13617,10 +13670,9 @@ pub mod api { enactment_moment, }, [ - 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, - 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, - 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, - 113u8, 69u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } @@ -14241,9 +14293,10 @@ pub mod api { "ReferendumInfoFor", vec![], [ - 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, - 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, - 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, ], ) } @@ -14265,9 +14318,10 @@ pub mod api { _0.borrow(), )], [ - 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, - 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, - 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, ], ) } @@ -14520,6 +14574,10 @@ pub mod api { } } } + pub mod origins { + use super::root_mod; + use super::runtime_types; + } pub mod whitelist { use super::root_mod; use super::runtime_types; @@ -14698,10 +14756,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 149u8, 115u8, 81u8, 76u8, 235u8, 167u8, 31u8, 227u8, 153u8, 46u8, - 233u8, 199u8, 94u8, 30u8, 253u8, 19u8, 189u8, 77u8, 151u8, 249u8, 68u8, - 207u8, 139u8, 67u8, 6u8, 193u8, 131u8, 123u8, 101u8, 100u8, 13u8, - 222u8, + 210u8, 240u8, 64u8, 4u8, 78u8, 73u8, 77u8, 229u8, 128u8, 118u8, 167u8, + 126u8, 152u8, 130u8, 213u8, 196u8, 80u8, 141u8, 244u8, 241u8, 10u8, + 82u8, 152u8, 243u8, 94u8, 47u8, 137u8, 209u8, 151u8, 31u8, 103u8, + 230u8, ], ) } @@ -15570,9 +15628,10 @@ pub mod api { "batch", types::Batch { calls }, [ - 78u8, 111u8, 192u8, 46u8, 34u8, 172u8, 232u8, 158u8, 67u8, 231u8, - 116u8, 182u8, 17u8, 178u8, 31u8, 98u8, 146u8, 71u8, 226u8, 56u8, 105u8, - 184u8, 75u8, 175u8, 78u8, 225u8, 25u8, 5u8, 226u8, 195u8, 199u8, 41u8, + 235u8, 69u8, 83u8, 214u8, 119u8, 108u8, 60u8, 227u8, 129u8, 43u8, + 230u8, 70u8, 242u8, 146u8, 178u8, 239u8, 75u8, 107u8, 16u8, 124u8, + 95u8, 189u8, 144u8, 191u8, 135u8, 243u8, 61u8, 102u8, 155u8, 3u8, + 230u8, 52u8, ], ) } @@ -15590,10 +15649,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 112u8, 49u8, 70u8, 206u8, 54u8, 117u8, 186u8, 83u8, 25u8, 68u8, 8u8, - 255u8, 91u8, 43u8, 254u8, 165u8, 230u8, 24u8, 104u8, 176u8, 236u8, - 166u8, 147u8, 244u8, 103u8, 208u8, 164u8, 26u8, 72u8, 44u8, 143u8, - 209u8, + 89u8, 19u8, 38u8, 160u8, 61u8, 225u8, 248u8, 36u8, 213u8, 109u8, 186u8, + 91u8, 66u8, 62u8, 55u8, 186u8, 159u8, 246u8, 125u8, 201u8, 101u8, + 209u8, 40u8, 35u8, 15u8, 186u8, 43u8, 216u8, 141u8, 244u8, 36u8, 178u8, ], ) } @@ -15607,10 +15665,9 @@ pub mod api { "batch_all", types::BatchAll { calls }, [ - 163u8, 4u8, 232u8, 21u8, 56u8, 119u8, 67u8, 62u8, 223u8, 193u8, 23u8, - 181u8, 202u8, 55u8, 186u8, 155u8, 169u8, 187u8, 213u8, 34u8, 153u8, - 255u8, 210u8, 170u8, 187u8, 212u8, 71u8, 92u8, 173u8, 145u8, 91u8, - 218u8, + 203u8, 246u8, 164u8, 119u8, 42u8, 254u8, 130u8, 113u8, 187u8, 95u8, + 175u8, 121u8, 73u8, 183u8, 95u8, 32u8, 103u8, 93u8, 214u8, 66u8, 148u8, + 143u8, 212u8, 50u8, 204u8, 219u8, 51u8, 37u8, 204u8, 6u8, 231u8, 133u8, ], ) } @@ -15628,10 +15685,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 91u8, 220u8, 144u8, 201u8, 69u8, 201u8, 58u8, 205u8, 190u8, 98u8, - 138u8, 115u8, 107u8, 54u8, 190u8, 44u8, 9u8, 46u8, 109u8, 80u8, 102u8, - 167u8, 139u8, 162u8, 61u8, 191u8, 159u8, 217u8, 207u8, 236u8, 20u8, - 213u8, + 209u8, 149u8, 31u8, 38u8, 134u8, 220u8, 22u8, 25u8, 8u8, 192u8, 23u8, + 136u8, 36u8, 95u8, 238u8, 118u8, 167u8, 158u8, 202u8, 37u8, 52u8, 69u8, + 46u8, 220u8, 60u8, 21u8, 120u8, 231u8, 193u8, 100u8, 103u8, 94u8, ], ) } @@ -15645,10 +15701,9 @@ pub mod api { "force_batch", types::ForceBatch { calls }, [ - 255u8, 125u8, 65u8, 157u8, 224u8, 195u8, 44u8, 249u8, 206u8, 224u8, - 11u8, 66u8, 67u8, 139u8, 24u8, 136u8, 57u8, 79u8, 85u8, 26u8, 51u8, - 170u8, 205u8, 52u8, 181u8, 94u8, 125u8, 250u8, 163u8, 126u8, 140u8, - 43u8, + 79u8, 8u8, 104u8, 150u8, 79u8, 246u8, 104u8, 229u8, 224u8, 250u8, 43u8, + 122u8, 82u8, 183u8, 51u8, 198u8, 89u8, 164u8, 231u8, 218u8, 164u8, + 77u8, 190u8, 17u8, 80u8, 109u8, 36u8, 149u8, 138u8, 64u8, 63u8, 153u8, ], ) } @@ -15666,10 +15721,10 @@ pub mod api { weight, }, [ - 187u8, 254u8, 162u8, 240u8, 54u8, 31u8, 44u8, 138u8, 164u8, 40u8, - 207u8, 170u8, 80u8, 220u8, 64u8, 162u8, 39u8, 87u8, 132u8, 169u8, 14u8, - 193u8, 69u8, 251u8, 171u8, 148u8, 107u8, 163u8, 73u8, 193u8, 46u8, - 26u8, + 162u8, 205u8, 237u8, 176u8, 167u8, 52u8, 45u8, 114u8, 66u8, 50u8, + 129u8, 249u8, 116u8, 253u8, 185u8, 76u8, 100u8, 236u8, 163u8, 104u8, + 64u8, 234u8, 102u8, 152u8, 93u8, 64u8, 37u8, 125u8, 82u8, 53u8, 145u8, + 220u8, ], ) } @@ -16181,6 +16236,179 @@ pub mod api { const PALLET: &'static str = "Identity"; const CALL: &'static str = "quit_sub"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::add_username_authority`]."] + pub struct AddUsernameAuthority { + pub authority: add_username_authority::Authority, + pub suffix: add_username_authority::Suffix, + pub allocation: add_username_authority::Allocation, + } + pub mod add_username_authority { + use super::runtime_types; + pub type Authority = + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Suffix = ::std::vec::Vec<::core::primitive::u8>; + pub type Allocation = ::core::primitive::u32; + } + impl ::subxt::blocks::StaticExtrinsic for AddUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "add_username_authority"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_username_authority`]."] + pub struct RemoveUsernameAuthority { + pub authority: remove_username_authority::Authority, + } + pub mod remove_username_authority { + use super::runtime_types; + pub type Authority = + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + } + impl ::subxt::blocks::StaticExtrinsic for RemoveUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_username_authority"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_username_for`]."] + pub struct SetUsernameFor { + pub who: set_username_for::Who, + pub username: set_username_for::Username, + pub signature: set_username_for::Signature, + } + pub mod set_username_for { + use super::runtime_types; + pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Username = ::std::vec::Vec<::core::primitive::u8>; + pub type Signature = + ::core::option::Option; + } + impl ::subxt::blocks::StaticExtrinsic for SetUsernameFor { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_username_for"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::accept_username`]."] + pub struct AcceptUsername { + pub username: accept_username::Username, + } + pub mod accept_username { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for AcceptUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "accept_username"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_expired_approval`]."] + pub struct RemoveExpiredApproval { + pub username: remove_expired_approval::Username, + } + pub mod remove_expired_approval { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for RemoveExpiredApproval { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_expired_approval"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_primary_username`]."] + pub struct SetPrimaryUsername { + pub username: set_primary_username::Username, + } + pub mod set_primary_username { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for SetPrimaryUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_primary_username"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_dangling_username`]."] + pub struct RemoveDanglingUsername { + pub username: remove_dangling_username::Username, + } + pub mod remove_dangling_username { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for RemoveDanglingUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_dangling_username"; + } } pub struct TransactionApi; impl TransactionApi { @@ -16445,6 +16673,132 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::add_username_authority`]."] + pub fn add_username_authority( + &self, + authority: types::add_username_authority::Authority, + suffix: types::add_username_authority::Suffix, + allocation: types::add_username_authority::Allocation, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "add_username_authority", + types::AddUsernameAuthority { + authority, + suffix, + allocation, + }, + [ + 225u8, 197u8, 122u8, 209u8, 206u8, 241u8, 247u8, 232u8, 196u8, 110u8, + 75u8, 157u8, 44u8, 181u8, 35u8, 75u8, 182u8, 219u8, 100u8, 64u8, 208u8, + 112u8, 120u8, 229u8, 211u8, 69u8, 193u8, 214u8, 195u8, 98u8, 10u8, + 25u8, + ], + ) + } + #[doc = "See [`Pallet::remove_username_authority`]."] + pub fn remove_username_authority( + &self, + authority: types::remove_username_authority::Authority, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_username_authority", + types::RemoveUsernameAuthority { authority }, + [ + 4u8, 182u8, 89u8, 1u8, 183u8, 15u8, 215u8, 48u8, 165u8, 97u8, 252u8, + 54u8, 223u8, 18u8, 211u8, 227u8, 226u8, 230u8, 185u8, 71u8, 202u8, + 95u8, 191u8, 6u8, 118u8, 144u8, 92u8, 98u8, 64u8, 243u8, 2u8, 137u8, + ], + ) + } + #[doc = "See [`Pallet::set_username_for`]."] + pub fn set_username_for( + &self, + who: types::set_username_for::Who, + username: types::set_username_for::Username, + signature: types::set_username_for::Signature, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_username_for", + types::SetUsernameFor { + who, + username, + signature, + }, + [ + 109u8, 128u8, 201u8, 28u8, 164u8, 222u8, 234u8, 197u8, 202u8, 156u8, + 53u8, 83u8, 51u8, 211u8, 222u8, 126u8, 227u8, 105u8, 72u8, 29u8, 25u8, + 188u8, 134u8, 247u8, 210u8, 183u8, 69u8, 94u8, 238u8, 91u8, 176u8, + 158u8, + ], + ) + } + #[doc = "See [`Pallet::accept_username`]."] + pub fn accept_username( + &self, + username: types::accept_username::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "accept_username", + types::AcceptUsername { username }, + [ + 247u8, 162u8, 83u8, 250u8, 214u8, 7u8, 12u8, 253u8, 227u8, 4u8, 95u8, + 71u8, 150u8, 218u8, 216u8, 86u8, 137u8, 37u8, 114u8, 188u8, 18u8, + 232u8, 229u8, 179u8, 172u8, 251u8, 70u8, 29u8, 18u8, 86u8, 33u8, 129u8, + ], + ) + } + #[doc = "See [`Pallet::remove_expired_approval`]."] + pub fn remove_expired_approval( + &self, + username: types::remove_expired_approval::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_expired_approval", + types::RemoveExpiredApproval { username }, + [ + 159u8, 171u8, 27u8, 97u8, 224u8, 171u8, 14u8, 89u8, 65u8, 213u8, 208u8, + 67u8, 118u8, 146u8, 0u8, 131u8, 82u8, 186u8, 142u8, 52u8, 173u8, 90u8, + 104u8, 107u8, 114u8, 202u8, 123u8, 222u8, 49u8, 53u8, 59u8, 61u8, + ], + ) + } + #[doc = "See [`Pallet::set_primary_username`]."] + pub fn set_primary_username( + &self, + username: types::set_primary_username::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_primary_username", + types::SetPrimaryUsername { username }, + [ + 3u8, 25u8, 56u8, 26u8, 108u8, 165u8, 84u8, 231u8, 16u8, 4u8, 6u8, + 232u8, 141u8, 7u8, 254u8, 50u8, 26u8, 230u8, 66u8, 245u8, 255u8, 101u8, + 183u8, 234u8, 197u8, 186u8, 132u8, 197u8, 251u8, 84u8, 212u8, 162u8, + ], + ) + } + #[doc = "See [`Pallet::remove_dangling_username`]."] + pub fn remove_dangling_username( + &self, + username: types::remove_dangling_username::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_dangling_username", + types::RemoveDanglingUsername { username }, + [ + 220u8, 67u8, 52u8, 223u8, 169u8, 81u8, 202u8, 74u8, 199u8, 169u8, 89u8, + 60u8, 57u8, 153u8, 240u8, 105u8, 188u8, 222u8, 250u8, 247u8, 91u8, + 137u8, 37u8, 212u8, 10u8, 51u8, 9u8, 202u8, 165u8, 155u8, 222u8, 29u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -16694,6 +17048,179 @@ pub mod api { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "SubIdentityRevoked"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username authority was added."] + pub struct AuthorityAdded { + pub authority: authority_added::Authority, + } + pub mod authority_added { + use super::runtime_types; + pub type Authority = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for AuthorityAdded { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityAdded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username authority was removed."] + pub struct AuthorityRemoved { + pub authority: authority_removed::Authority, + } + pub mod authority_removed { + use super::runtime_types; + pub type Authority = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for AuthorityRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was set for `who`."] + pub struct UsernameSet { + pub who: username_set::Who, + pub username: username_set::Username, + } + pub mod username_set { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::events::StaticEvent for UsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + pub struct UsernameQueued { + pub who: username_queued::Who, + pub username: username_queued::Username, + pub expiration: username_queued::Expiration, + } + pub mod username_queued { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + pub type Expiration = ::core::primitive::u32; + } + impl ::subxt::events::StaticEvent for UsernameQueued { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameQueued"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + pub struct PreapprovalExpired { + pub whose: preapproval_expired::Whose, + } + pub mod preapproval_expired { + use super::runtime_types; + pub type Whose = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for PreapprovalExpired { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PreapprovalExpired"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was set as a primary and can be looked up from `who`."] + pub struct PrimaryUsernameSet { + pub who: primary_username_set::Who, + pub username: primary_username_set::Username, + } + pub mod primary_username_set { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::events::StaticEvent for PrimaryUsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PrimaryUsernameSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + pub struct DanglingUsernameRemoved { + pub who: dangling_username_removed::Who, + pub username: dangling_username_removed::Username, + } + pub mod dangling_username_removed { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::events::StaticEvent for DanglingUsernameRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "DanglingUsernameRemoved"; + } } pub mod storage { use super::runtime_types; @@ -16701,10 +17228,17 @@ pub mod api { use super::runtime_types; pub mod identity_of { use super::runtime_types; - pub type IdentityOf = runtime_types::pallet_identity::types::Registration< - ::core::primitive::u128, - runtime_types::pallet_identity::legacy::IdentityInfo, - >; + pub type IdentityOf = ( + runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + runtime_types::pallet_identity::legacy::IdentityInfo, + >, + ::core::option::Option< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + ); pub type Param0 = ::subxt::utils::AccountId32; } pub mod super_of { @@ -16738,10 +17272,36 @@ pub mod api { >, >; } + pub mod username_authorities { + use super::runtime_types; + pub type UsernameAuthorities = + runtime_types::pallet_identity::types::AuthorityProperties< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >; + pub type Param0 = ::subxt::utils::AccountId32; + } + pub mod account_of_username { + use super::runtime_types; + pub type AccountOfUsername = ::subxt::utils::AccountId32; + pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + pub mod pending_usernames { + use super::runtime_types; + pub type PendingUsernames = + (::subxt::utils::AccountId32, ::core::primitive::u32); + pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } } pub struct StorageApi; impl StorageApi { - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of_iter( @@ -16758,13 +17318,14 @@ pub mod api { "IdentityOf", vec![], [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of( @@ -16784,9 +17345,9 @@ pub mod api { _0.borrow(), )], [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } @@ -16917,13 +17478,170 @@ pub mod api { ], ) } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::username_authorities::UsernameAuthorities, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "UsernameAuthorities", + vec![], + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::username_authorities::UsernameAuthorities, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "UsernameAuthorities", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::account_of_username::AccountOfUsername, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "AccountOfUsername", + vec![], + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::account_of_username::AccountOfUsername, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "AccountOfUsername", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::pending_usernames::PendingUsernames, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "PendingUsernames", + vec![], + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::pending_usernames::PendingUsernames, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "PendingUsernames", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, + ], + ) + } } } pub mod constants { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The amount held on deposit for a registered identity"] + #[doc = " The amount held on deposit for a registered identity."] pub fn basic_deposit( &self, ) -> ::subxt::constants::Address<::core::primitive::u128> { @@ -16996,6 +17714,51 @@ pub mod api { ], ) } + #[doc = " The number of blocks within which a username grant must be accepted."] + pub fn pending_username_expiration( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "PendingUsernameExpiration", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a suffix."] + pub fn max_suffix_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxSuffixLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a username, including its suffix and any system-added delimiters."] + pub fn max_username_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxUsernameLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } } } } @@ -19359,10 +20122,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 226u8, 94u8, 208u8, 74u8, 163u8, 132u8, 180u8, 25u8, 34u8, 222u8, - 242u8, 194u8, 224u8, 188u8, 18u8, 229u8, 55u8, 248u8, 19u8, 244u8, - 182u8, 148u8, 138u8, 228u8, 2u8, 55u8, 50u8, 36u8, 32u8, 115u8, 147u8, - 149u8, + 85u8, 206u8, 232u8, 41u8, 57u8, 159u8, 145u8, 157u8, 94u8, 238u8, 80u8, + 26u8, 113u8, 194u8, 123u8, 196u8, 83u8, 235u8, 134u8, 102u8, 9u8, + 219u8, 64u8, 7u8, 251u8, 92u8, 23u8, 59u8, 188u8, 11u8, 24u8, 15u8, ], ) } @@ -20596,9 +21358,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 122u8, 88u8, 251u8, 25u8, 239u8, 91u8, 220u8, 116u8, 155u8, 219u8, - 129u8, 170u8, 81u8, 4u8, 224u8, 195u8, 83u8, 196u8, 48u8, 159u8, 222u8, - 72u8, 2u8, 131u8, 14u8, 204u8, 21u8, 234u8, 2u8, 237u8, 69u8, 28u8, + 158u8, 215u8, 150u8, 176u8, 69u8, 99u8, 193u8, 8u8, 225u8, 121u8, 86u8, + 178u8, 93u8, 227u8, 146u8, 186u8, 199u8, 7u8, 249u8, 188u8, 55u8, 74u8, + 122u8, 251u8, 65u8, 50u8, 183u8, 238u8, 96u8, 252u8, 122u8, 186u8, ], ) } @@ -20640,9 +21402,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 4u8, 172u8, 69u8, 211u8, 77u8, 162u8, 70u8, 8u8, 60u8, 79u8, 223u8, - 222u8, 210u8, 64u8, 116u8, 53u8, 161u8, 251u8, 28u8, 236u8, 12u8, - 212u8, 174u8, 0u8, 10u8, 78u8, 132u8, 232u8, 163u8, 44u8, 9u8, 200u8, + 40u8, 8u8, 195u8, 141u8, 167u8, 129u8, 96u8, 125u8, 51u8, 135u8, 252u8, + 10u8, 87u8, 220u8, 13u8, 137u8, 56u8, 188u8, 27u8, 59u8, 73u8, 47u8, + 136u8, 194u8, 218u8, 23u8, 33u8, 138u8, 91u8, 18u8, 80u8, 62u8, ], ) } @@ -20680,9 +21442,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 218u8, 190u8, 254u8, 33u8, 44u8, 21u8, 3u8, 225u8, 106u8, 85u8, 42u8, - 102u8, 206u8, 52u8, 225u8, 78u8, 220u8, 205u8, 130u8, 191u8, 223u8, - 152u8, 7u8, 46u8, 168u8, 251u8, 167u8, 72u8, 186u8, 102u8, 239u8, 95u8, + 66u8, 127u8, 226u8, 141u8, 231u8, 85u8, 141u8, 76u8, 145u8, 28u8, + 168u8, 30u8, 3u8, 53u8, 44u8, 126u8, 192u8, 214u8, 66u8, 113u8, 200u8, + 164u8, 109u8, 31u8, 31u8, 150u8, 91u8, 194u8, 172u8, 123u8, 8u8, 92u8, ], ) } @@ -20706,9 +21468,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 87u8, 222u8, 30u8, 136u8, 12u8, 96u8, 70u8, 211u8, 190u8, 75u8, 247u8, - 231u8, 71u8, 59u8, 62u8, 126u8, 22u8, 4u8, 237u8, 153u8, 26u8, 180u8, - 88u8, 128u8, 69u8, 55u8, 31u8, 201u8, 227u8, 95u8, 38u8, 67u8, + 26u8, 226u8, 147u8, 92u8, 228u8, 230u8, 99u8, 118u8, 206u8, 152u8, + 34u8, 209u8, 180u8, 135u8, 19u8, 43u8, 134u8, 19u8, 20u8, 106u8, 236u8, + 224u8, 120u8, 255u8, 113u8, 185u8, 193u8, 31u8, 58u8, 58u8, 136u8, + 239u8, ], ) } @@ -20935,9 +21698,9 @@ pub mod api { "Agenda", vec![], [ - 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, - 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, - 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, ], ) } @@ -20959,9 +21722,9 @@ pub mod api { _0.borrow(), )], [ - 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, - 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, - 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, ], ) } @@ -21351,10 +22114,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 244u8, 249u8, 206u8, 185u8, 48u8, 156u8, 194u8, 100u8, 198u8, 133u8, - 26u8, 248u8, 122u8, 194u8, 19u8, 42u8, 6u8, 201u8, 112u8, 79u8, 19u8, - 134u8, 145u8, 157u8, 129u8, 237u8, 139u8, 133u8, 227u8, 43u8, 56u8, - 153u8, + 122u8, 7u8, 247u8, 164u8, 62u8, 254u8, 12u8, 208u8, 188u8, 49u8, 244u8, + 153u8, 59u8, 65u8, 73u8, 58u8, 88u8, 134u8, 255u8, 150u8, 157u8, 8u8, + 153u8, 41u8, 21u8, 186u8, 114u8, 71u8, 128u8, 108u8, 203u8, 20u8, ], ) } @@ -21538,9 +22300,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 217u8, 199u8, 199u8, 95u8, 222u8, 27u8, 176u8, 48u8, 0u8, 226u8, 245u8, - 221u8, 226u8, 48u8, 29u8, 233u8, 28u8, 187u8, 52u8, 17u8, 172u8, 42u8, - 88u8, 107u8, 61u8, 104u8, 65u8, 42u8, 35u8, 53u8, 80u8, 48u8, + 109u8, 140u8, 6u8, 12u8, 91u8, 4u8, 254u8, 2u8, 91u8, 243u8, 154u8, + 79u8, 83u8, 153u8, 67u8, 160u8, 206u8, 37u8, 85u8, 25u8, 10u8, 224u8, + 146u8, 227u8, 134u8, 129u8, 191u8, 47u8, 243u8, 93u8, 215u8, 222u8, ], ) } @@ -22065,10 +22827,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 228u8, 69u8, 114u8, 33u8, 253u8, 99u8, 173u8, 184u8, 219u8, 170u8, - 155u8, 9u8, 231u8, 77u8, 180u8, 97u8, 26u8, 0u8, 97u8, 107u8, 112u8, - 223u8, 207u8, 156u8, 86u8, 17u8, 115u8, 211u8, 188u8, 122u8, 51u8, - 55u8, + 174u8, 71u8, 76u8, 85u8, 10u8, 92u8, 166u8, 33u8, 124u8, 212u8, 89u8, + 40u8, 24u8, 94u8, 252u8, 139u8, 68u8, 122u8, 191u8, 247u8, 212u8, 48u8, + 173u8, 252u8, 86u8, 57u8, 178u8, 208u8, 56u8, 49u8, 64u8, 182u8, ], ) } @@ -22092,10 +22853,9 @@ pub mod api { max_weight, }, [ - 110u8, 238u8, 2u8, 11u8, 232u8, 202u8, 100u8, 39u8, 103u8, 211u8, - 204u8, 203u8, 228u8, 31u8, 206u8, 103u8, 97u8, 57u8, 217u8, 24u8, - 229u8, 237u8, 56u8, 84u8, 220u8, 240u8, 169u8, 211u8, 26u8, 98u8, 37u8, - 0u8, + 122u8, 132u8, 216u8, 231u8, 74u8, 72u8, 208u8, 47u8, 203u8, 32u8, 71u8, + 2u8, 240u8, 74u8, 236u8, 139u8, 226u8, 162u8, 182u8, 152u8, 69u8, 62u8, + 172u8, 188u8, 119u8, 227u8, 134u8, 59u8, 255u8, 164u8, 74u8, 179u8, ], ) } @@ -23000,10 +23760,9 @@ pub mod api { rate, }, [ - 154u8, 152u8, 38u8, 160u8, 110u8, 48u8, 11u8, 80u8, 92u8, 50u8, 177u8, - 170u8, 43u8, 6u8, 192u8, 234u8, 105u8, 114u8, 165u8, 178u8, 173u8, - 134u8, 92u8, 233u8, 123u8, 191u8, 176u8, 154u8, 222u8, 224u8, 32u8, - 183u8, + 163u8, 173u8, 223u8, 197u8, 42u8, 251u8, 151u8, 159u8, 252u8, 132u8, + 225u8, 224u8, 207u8, 127u8, 38u8, 0u8, 101u8, 46u8, 29u8, 65u8, 2u8, + 241u8, 3u8, 79u8, 218u8, 10u8, 159u8, 122u8, 48u8, 7u8, 225u8, 103u8, ], ) } @@ -23021,10 +23780,9 @@ pub mod api { rate, }, [ - 188u8, 71u8, 197u8, 156u8, 105u8, 63u8, 11u8, 90u8, 124u8, 227u8, - 146u8, 78u8, 93u8, 216u8, 100u8, 41u8, 128u8, 115u8, 66u8, 243u8, - 198u8, 61u8, 115u8, 30u8, 170u8, 218u8, 254u8, 203u8, 37u8, 141u8, - 67u8, 179u8, + 21u8, 51u8, 198u8, 111u8, 185u8, 155u8, 215u8, 34u8, 5u8, 135u8, 138u8, + 77u8, 76u8, 158u8, 63u8, 240u8, 117u8, 39u8, 83u8, 146u8, 70u8, 136u8, + 61u8, 159u8, 30u8, 66u8, 85u8, 41u8, 122u8, 174u8, 25u8, 49u8, ], ) } @@ -23040,10 +23798,10 @@ pub mod api { asset_kind: ::std::boxed::Box::new(asset_kind), }, [ - 229u8, 203u8, 96u8, 158u8, 162u8, 236u8, 80u8, 239u8, 106u8, 193u8, - 85u8, 234u8, 99u8, 87u8, 214u8, 214u8, 157u8, 55u8, 70u8, 91u8, 9u8, - 187u8, 105u8, 99u8, 134u8, 181u8, 56u8, 212u8, 152u8, 136u8, 100u8, - 32u8, + 205u8, 34u8, 63u8, 131u8, 204u8, 76u8, 186u8, 233u8, 160u8, 45u8, + 231u8, 159u8, 186u8, 60u8, 97u8, 218u8, 174u8, 144u8, 106u8, 58u8, + 69u8, 23u8, 244u8, 129u8, 19u8, 250u8, 16u8, 99u8, 165u8, 165u8, 101u8, + 18u8, ], ) } @@ -23157,9 +23915,10 @@ pub mod api { "ConversionRateToNative", vec![], [ - 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, - 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, - 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, ], ) } @@ -23183,9 +23942,10 @@ pub mod api { _0.borrow(), )], [ - 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, - 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, - 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, ], ) } @@ -26917,10 +27677,10 @@ pub mod api { "Holds", vec![], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -26942,10 +27702,10 @@ pub mod api { _0.borrow(), )], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -27236,17 +27996,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_cores`]."] - pub struct SetOnDemandCores { - pub new: set_on_demand_cores::New, + #[doc = "See [`Pallet::set_coretime_cores`]."] + pub struct SetCoretimeCores { + pub new: set_coretime_cores::New, } - pub mod set_on_demand_cores { + pub mod set_coretime_cores { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandCores { + impl ::subxt::blocks::StaticExtrinsic for SetCoretimeCores { const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_on_demand_cores"; + const CALL: &'static str = "set_coretime_cores"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -28086,6 +28846,53 @@ pub mod api { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_minimum_backing_votes"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_node_feature`]."] + pub struct SetNodeFeature { + pub index: set_node_feature::Index, + pub value: set_node_feature::Value, + } + pub mod set_node_feature { + use super::runtime_types; + pub type Index = ::core::primitive::u8; + pub type Value = ::core::primitive::bool; + } + impl ::subxt::blocks::StaticExtrinsic for SetNodeFeature { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_node_feature"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_approval_voting_params`]."] + pub struct SetApprovalVotingParams { + pub new: set_approval_voting_params::New, + } + pub mod set_approval_voting_params { + use super::runtime_types; + pub type New = + runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams; + } + impl ::subxt::blocks::StaticExtrinsic for SetApprovalVotingParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_approval_voting_params"; + } } pub struct TransactionApi; impl TransactionApi { @@ -28189,20 +28996,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_cores`]."] - pub fn set_on_demand_cores( + #[doc = "See [`Pallet::set_coretime_cores`]."] + pub fn set_coretime_cores( &self, - new: types::set_on_demand_cores::New, - ) -> ::subxt::tx::Payload { + new: types::set_coretime_cores::New, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", - "set_on_demand_cores", - types::SetOnDemandCores { new }, + "set_coretime_cores", + types::SetCoretimeCores { new }, [ - 157u8, 26u8, 82u8, 103u8, 83u8, 214u8, 92u8, 176u8, 93u8, 70u8, 32u8, - 217u8, 139u8, 30u8, 145u8, 237u8, 34u8, 121u8, 190u8, 17u8, 128u8, - 243u8, 241u8, 181u8, 85u8, 141u8, 107u8, 70u8, 121u8, 119u8, 20u8, - 104u8, + 179u8, 131u8, 211u8, 152u8, 167u8, 6u8, 108u8, 94u8, 179u8, 97u8, 87u8, + 227u8, 57u8, 120u8, 133u8, 130u8, 59u8, 243u8, 224u8, 2u8, 11u8, 86u8, + 251u8, 77u8, 159u8, 177u8, 145u8, 34u8, 117u8, 93u8, 28u8, 52u8, ], ) } @@ -28734,9 +29540,9 @@ pub mod api { "set_executor_params", types::SetExecutorParams { new }, [ - 219u8, 27u8, 25u8, 162u8, 61u8, 189u8, 61u8, 32u8, 101u8, 139u8, 89u8, - 51u8, 191u8, 223u8, 94u8, 145u8, 109u8, 247u8, 22u8, 64u8, 178u8, 97u8, - 239u8, 0u8, 125u8, 20u8, 62u8, 210u8, 110u8, 79u8, 225u8, 43u8, + 79u8, 167u8, 242u8, 14u8, 22u8, 177u8, 240u8, 134u8, 154u8, 77u8, + 233u8, 188u8, 110u8, 223u8, 25u8, 52u8, 58u8, 241u8, 226u8, 255u8, 2u8, + 26u8, 8u8, 241u8, 125u8, 33u8, 63u8, 204u8, 93u8, 31u8, 229u8, 0u8, ], ) } @@ -28840,6 +29646,40 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::set_node_feature`]."] + pub fn set_node_feature( + &self, + index: types::set_node_feature::Index, + value: types::set_node_feature::Value, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_node_feature", + types::SetNodeFeature { index, value }, + [ + 255u8, 19u8, 208u8, 76u8, 122u8, 6u8, 42u8, 182u8, 118u8, 151u8, 245u8, + 80u8, 162u8, 243u8, 45u8, 57u8, 122u8, 148u8, 98u8, 170u8, 157u8, 40u8, + 92u8, 234u8, 12u8, 141u8, 54u8, 80u8, 97u8, 249u8, 115u8, 27u8, + ], + ) + } + #[doc = "See [`Pallet::set_approval_voting_params`]."] + pub fn set_approval_voting_params( + &self, + new: types::set_approval_voting_params::New, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_approval_voting_params", + types::SetApprovalVotingParams { new }, + [ + 248u8, 81u8, 74u8, 103u8, 28u8, 108u8, 190u8, 177u8, 201u8, 252u8, + 87u8, 236u8, 20u8, 189u8, 192u8, 173u8, 40u8, 160u8, 170u8, 187u8, + 42u8, 108u8, 184u8, 131u8, 120u8, 237u8, 229u8, 240u8, 128u8, 49u8, + 163u8, 11u8, + ], + ) + } } } pub mod storage { @@ -28876,10 +29716,9 @@ pub mod api { "ActiveConfig", vec![], [ - 126u8, 223u8, 107u8, 199u8, 21u8, 114u8, 19u8, 172u8, 27u8, 108u8, - 189u8, 165u8, 33u8, 220u8, 57u8, 81u8, 137u8, 242u8, 204u8, 148u8, - 61u8, 161u8, 156u8, 36u8, 20u8, 172u8, 117u8, 30u8, 152u8, 210u8, - 207u8, 161u8, + 241u8, 129u8, 175u8, 69u8, 121u8, 171u8, 135u8, 98u8, 205u8, 87u8, + 244u8, 201u8, 27u8, 143u8, 112u8, 77u8, 83u8, 107u8, 22u8, 120u8, 58u8, + 74u8, 48u8, 72u8, 236u8, 132u8, 248u8, 60u8, 131u8, 107u8, 7u8, 98u8, ], ) } @@ -28904,10 +29743,9 @@ pub mod api { "PendingConfigs", vec![], [ - 105u8, 89u8, 53u8, 156u8, 60u8, 53u8, 196u8, 187u8, 5u8, 122u8, 186u8, - 196u8, 162u8, 133u8, 254u8, 178u8, 130u8, 143u8, 90u8, 23u8, 234u8, - 105u8, 9u8, 121u8, 142u8, 123u8, 136u8, 166u8, 95u8, 215u8, 176u8, - 46u8, + 29u8, 220u8, 218u8, 233u8, 222u8, 28u8, 203u8, 86u8, 0u8, 34u8, 78u8, + 157u8, 206u8, 57u8, 211u8, 206u8, 34u8, 22u8, 126u8, 92u8, 13u8, 71u8, + 156u8, 156u8, 121u8, 2u8, 30u8, 72u8, 37u8, 12u8, 88u8, 210u8, ], ) } @@ -29417,9 +30255,10 @@ pub mod api { "enter", types::Enter { data }, [ - 145u8, 120u8, 158u8, 39u8, 139u8, 223u8, 236u8, 209u8, 253u8, 108u8, - 188u8, 21u8, 23u8, 61u8, 25u8, 171u8, 30u8, 203u8, 161u8, 117u8, 90u8, - 55u8, 50u8, 107u8, 26u8, 52u8, 26u8, 158u8, 56u8, 218u8, 186u8, 142u8, + 43u8, 145u8, 39u8, 208u8, 205u8, 120u8, 57u8, 196u8, 192u8, 128u8, + 144u8, 83u8, 121u8, 232u8, 191u8, 82u8, 200u8, 129u8, 139u8, 27u8, + 126u8, 177u8, 240u8, 158u8, 232u8, 180u8, 26u8, 180u8, 116u8, 148u8, + 168u8, 41u8, ], ) } @@ -29484,10 +30323,10 @@ pub mod api { "OnChainVotes", vec![], [ - 200u8, 210u8, 42u8, 153u8, 85u8, 71u8, 171u8, 108u8, 148u8, 212u8, - 108u8, 61u8, 178u8, 77u8, 129u8, 90u8, 120u8, 218u8, 228u8, 152u8, - 120u8, 226u8, 29u8, 82u8, 239u8, 146u8, 41u8, 164u8, 193u8, 207u8, - 246u8, 115u8, + 65u8, 20u8, 36u8, 37u8, 239u8, 150u8, 32u8, 78u8, 226u8, 88u8, 80u8, + 240u8, 12u8, 156u8, 176u8, 75u8, 231u8, 204u8, 37u8, 24u8, 204u8, + 228u8, 75u8, 235u8, 43u8, 163u8, 174u8, 152u8, 166u8, 17u8, 232u8, + 33u8, ], ) } @@ -29521,7 +30360,7 @@ pub mod api { } pub mod claim_queue { use super::runtime_types; - pub type ClaimQueue = :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: std :: vec :: Vec < :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > > ; + pub type ClaimQueue = :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > ; } } pub struct StorageApi; @@ -29575,9 +30414,10 @@ pub mod api { "AvailabilityCores", vec![], [ - 134u8, 59u8, 206u8, 4u8, 69u8, 72u8, 73u8, 25u8, 139u8, 152u8, 202u8, - 43u8, 224u8, 77u8, 64u8, 57u8, 218u8, 245u8, 254u8, 222u8, 227u8, 95u8, - 119u8, 134u8, 218u8, 47u8, 154u8, 233u8, 229u8, 172u8, 100u8, 86u8, + 250u8, 177u8, 44u8, 237u8, 5u8, 116u8, 135u8, 99u8, 136u8, 209u8, + 181u8, 145u8, 254u8, 57u8, 42u8, 92u8, 236u8, 67u8, 128u8, 171u8, + 200u8, 88u8, 40u8, 31u8, 163u8, 128u8, 15u8, 96u8, 181u8, 224u8, 162u8, + 188u8, ], ) } @@ -29627,9 +30467,10 @@ pub mod api { "ClaimQueue", vec![], [ - 132u8, 78u8, 109u8, 225u8, 170u8, 78u8, 17u8, 53u8, 56u8, 218u8, 14u8, - 17u8, 230u8, 247u8, 11u8, 223u8, 18u8, 98u8, 92u8, 164u8, 223u8, 143u8, - 241u8, 64u8, 185u8, 108u8, 228u8, 137u8, 122u8, 100u8, 29u8, 239u8, + 192u8, 65u8, 227u8, 114u8, 125u8, 169u8, 134u8, 70u8, 201u8, 99u8, + 246u8, 23u8, 0u8, 143u8, 163u8, 87u8, 216u8, 1u8, 184u8, 124u8, 23u8, + 180u8, 132u8, 143u8, 202u8, 81u8, 144u8, 242u8, 15u8, 141u8, 124u8, + 126u8, ], ) } @@ -33094,10 +33935,9 @@ pub mod api { "SessionExecutorParams", vec![], [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } @@ -33119,10 +33959,9 @@ pub mod api { _0.borrow(), )], [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } @@ -33914,7 +34753,7 @@ pub mod api { } pub mod processing_failed { use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; + pub type Id = ::subxt::utils::H256; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type Error = @@ -33943,7 +34782,7 @@ pub mod api { } pub mod processed { use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; + pub type Id = ::subxt::utils::H256; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type WeightUsed = runtime_types::sp_weights::weight_v2::Weight; @@ -34235,18 +35074,6 @@ pub mod api { } } } - pub mod para_assignment_provider { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - } - pub struct StorageApi; - impl StorageApi {} - } - } pub mod on_demand_assignment_provider { use super::root_mod; use super::runtime_types; @@ -34418,9 +35245,7 @@ pub mod api { } pub mod on_demand_queue { use super::runtime_types; - pub type OnDemandQueue = ::std::vec::Vec< - runtime_types::polkadot_runtime_parachains::scheduler::common::Assignment, - >; + pub type OnDemandQueue = :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > ; } pub mod para_id_affinity { use super::runtime_types; @@ -34553,6 +35378,167 @@ pub mod api { use super::root_mod; use super::runtime_types; } + pub mod coretime_assignment_provider { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod core_schedules { + use super::runtime_types; + pub type CoreSchedules = + runtime_types::polkadot_runtime_parachains::assigner_coretime::Schedule< + ::core::primitive::u32, + >; + pub type Param0 = ::core::primitive::u32; + pub type Param1 = runtime_types::polkadot_primitives::v6::CoreIndex; + } + pub mod core_descriptors { + use super::runtime_types; + pub type CoreDescriptors = runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: CoreDescriptor < :: core :: primitive :: u32 > ; + pub type Param0 = runtime_types::polkadot_primitives::v6::CoreIndex; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_schedules::CoreSchedules, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + vec![], + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules_iter1( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_schedules::CoreSchedules, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules( + &self, + _0: impl ::std::borrow::Borrow, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_schedules::CoreSchedules, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_descriptors::CoreDescriptors, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + vec![], + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_descriptors::CoreDescriptors, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + } + } + } pub mod registrar { use super::root_mod; use super::runtime_types; @@ -37065,6 +38051,187 @@ pub mod api { } } } + pub mod coretime { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::coretime::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::coretime::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::request_core_count`]."] + pub struct RequestCoreCount { + pub count: request_core_count::Count, + } + pub mod request_core_count { + use super::runtime_types; + pub type Count = ::core::primitive::u16; + } + impl ::subxt::blocks::StaticExtrinsic for RequestCoreCount { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "request_core_count"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::assign_core`]."] + pub struct AssignCore { + pub core: assign_core::Core, + pub begin: assign_core::Begin, + pub assignment: assign_core::Assignment, + pub end_hint: assign_core::EndHint, + } + pub mod assign_core { + use super::runtime_types; + pub type Core = ::core::primitive::u16; + pub type Begin = ::core::primitive::u32; + pub type Assignment = ::std::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>; + pub type EndHint = ::core::option::Option<::core::primitive::u32>; + } + impl ::subxt::blocks::StaticExtrinsic for AssignCore { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "assign_core"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::request_core_count`]."] + pub fn request_core_count( + &self, + count: types::request_core_count::Count, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Coretime", + "request_core_count", + types::RequestCoreCount { count }, + [ + 8u8, 225u8, 74u8, 162u8, 188u8, 3u8, 191u8, 45u8, 167u8, 21u8, 227u8, + 200u8, 65u8, 221u8, 49u8, 212u8, 12u8, 229u8, 160u8, 178u8, 136u8, + 13u8, 131u8, 42u8, 220u8, 3u8, 151u8, 241u8, 210u8, 158u8, 218u8, + 217u8, + ], + ) + } + #[doc = "See [`Pallet::assign_core`]."] + pub fn assign_core( + &self, + core: types::assign_core::Core, + begin: types::assign_core::Begin, + assignment: types::assign_core::Assignment, + end_hint: types::assign_core::EndHint, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Coretime", + "assign_core", + types::AssignCore { + core, + begin, + assignment, + end_hint, + }, + [ + 113u8, 133u8, 153u8, 202u8, 209u8, 53u8, 168u8, 214u8, 153u8, 232u8, + 170u8, 35u8, 63u8, 87u8, 5u8, 108u8, 188u8, 55u8, 111u8, 55u8, 22u8, + 1u8, 190u8, 216u8, 233u8, 185u8, 135u8, 172u8, 15u8, 254u8, 91u8, 92u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::coretime::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The broker chain has asked for revenue information for a specific block."] + pub struct RevenueInfoRequested { + pub when: revenue_info_requested::When, + } + pub mod revenue_info_requested { + use super::runtime_types; + pub type When = ::core::primitive::u32; + } + impl ::subxt::events::StaticEvent for RevenueInfoRequested { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "RevenueInfoRequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A core has received a new assignment from the broker chain."] + pub struct CoreAssigned { + pub core: core_assigned::Core, + } + pub mod core_assigned { + use super::runtime_types; + pub type Core = runtime_types::polkadot_primitives::v6::CoreIndex; + } + impl ::subxt::events::StaticEvent for CoreAssigned { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "CoreAssigned"; + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The ParaId of the broker system parachain."] + pub fn broker_id(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Coretime", + "BrokerId", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } pub mod xcm_pallet { use super::root_mod; use super::runtime_types; @@ -37095,7 +38262,7 @@ pub mod api { } pub mod send { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Dest = runtime_types::xcm::VersionedLocation; pub type Message = runtime_types::xcm::VersionedXcm; } impl ::subxt::blocks::StaticExtrinsic for Send { @@ -37121,9 +38288,9 @@ pub mod api { } pub mod teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; } impl ::subxt::blocks::StaticExtrinsic for TeleportAssets { @@ -37149,9 +38316,9 @@ pub mod api { } pub mod reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; } impl ::subxt::blocks::StaticExtrinsic for ReserveTransferAssets { @@ -37199,8 +38366,7 @@ pub mod api { } pub mod force_xcm_version { use super::runtime_types; - pub type Location = - runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type Version = ::core::primitive::u32; } impl ::subxt::blocks::StaticExtrinsic for ForceXcmVersion { @@ -37245,7 +38411,7 @@ pub mod api { } pub mod force_subscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; } impl ::subxt::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; @@ -37267,7 +38433,7 @@ pub mod api { } pub mod force_unsubscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; } impl ::subxt::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; @@ -37294,9 +38460,9 @@ pub mod api { } pub mod limited_reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } @@ -37324,9 +38490,9 @@ pub mod api { } pub mod limited_teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } @@ -37356,6 +38522,36 @@ pub mod api { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_suspension"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::transfer_assets`]."] + pub struct TransferAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: transfer_assets::FeeAssetItem, + pub weight_limit: transfer_assets::WeightLimit, + } + pub mod transfer_assets { + use super::runtime_types; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; + pub type FeeAssetItem = ::core::primitive::u32; + pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; + } + impl ::subxt::blocks::StaticExtrinsic for TransferAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "transfer_assets"; + } } pub struct TransactionApi; impl TransactionApi { @@ -37373,9 +38569,10 @@ pub mod api { message: ::std::boxed::Box::new(message), }, [ - 147u8, 255u8, 86u8, 82u8, 17u8, 159u8, 225u8, 145u8, 220u8, 89u8, 71u8, - 23u8, 193u8, 249u8, 12u8, 70u8, 19u8, 140u8, 232u8, 97u8, 12u8, 220u8, - 113u8, 65u8, 4u8, 255u8, 138u8, 10u8, 231u8, 122u8, 67u8, 105u8, + 47u8, 63u8, 128u8, 176u8, 10u8, 137u8, 124u8, 238u8, 155u8, 37u8, + 193u8, 160u8, 83u8, 240u8, 21u8, 179u8, 169u8, 131u8, 27u8, 104u8, + 195u8, 208u8, 123u8, 14u8, 221u8, 12u8, 45u8, 81u8, 148u8, 76u8, 17u8, + 100u8, ], ) } @@ -37397,9 +38594,9 @@ pub mod api { fee_asset_item, }, [ - 56u8, 144u8, 237u8, 60u8, 157u8, 5u8, 7u8, 129u8, 41u8, 149u8, 160u8, - 100u8, 233u8, 102u8, 181u8, 140u8, 115u8, 213u8, 29u8, 132u8, 16u8, - 30u8, 23u8, 82u8, 140u8, 134u8, 37u8, 87u8, 3u8, 99u8, 172u8, 42u8, + 124u8, 191u8, 118u8, 61u8, 45u8, 225u8, 97u8, 83u8, 198u8, 20u8, 139u8, + 117u8, 241u8, 1u8, 19u8, 54u8, 79u8, 181u8, 131u8, 112u8, 11u8, 118u8, + 147u8, 12u8, 89u8, 156u8, 123u8, 123u8, 195u8, 45u8, 50u8, 107u8, ], ) } @@ -37421,9 +38618,10 @@ pub mod api { fee_asset_item, }, [ - 21u8, 167u8, 44u8, 22u8, 210u8, 73u8, 148u8, 7u8, 91u8, 108u8, 148u8, - 205u8, 170u8, 243u8, 142u8, 224u8, 205u8, 119u8, 252u8, 22u8, 203u8, - 32u8, 73u8, 200u8, 178u8, 14u8, 167u8, 147u8, 166u8, 55u8, 14u8, 231u8, + 97u8, 102u8, 230u8, 44u8, 135u8, 197u8, 43u8, 53u8, 182u8, 125u8, + 140u8, 141u8, 229u8, 73u8, 29u8, 55u8, 159u8, 104u8, 197u8, 20u8, + 124u8, 234u8, 250u8, 94u8, 133u8, 253u8, 189u8, 6u8, 216u8, 162u8, + 218u8, 89u8, ], ) } @@ -37441,9 +38639,10 @@ pub mod api { max_weight, }, [ - 15u8, 97u8, 86u8, 111u8, 105u8, 116u8, 109u8, 206u8, 70u8, 8u8, 57u8, - 232u8, 133u8, 132u8, 30u8, 219u8, 34u8, 69u8, 0u8, 213u8, 98u8, 241u8, - 186u8, 93u8, 216u8, 39u8, 73u8, 24u8, 193u8, 87u8, 92u8, 31u8, + 71u8, 109u8, 92u8, 110u8, 198u8, 150u8, 140u8, 125u8, 248u8, 236u8, + 177u8, 156u8, 198u8, 223u8, 51u8, 15u8, 52u8, 240u8, 20u8, 200u8, 68u8, + 145u8, 36u8, 156u8, 159u8, 153u8, 125u8, 48u8, 181u8, 61u8, 53u8, + 208u8, ], ) } @@ -37461,9 +38660,9 @@ pub mod api { version, }, [ - 110u8, 11u8, 78u8, 255u8, 66u8, 2u8, 55u8, 108u8, 92u8, 151u8, 231u8, - 175u8, 75u8, 156u8, 34u8, 191u8, 0u8, 56u8, 104u8, 197u8, 70u8, 204u8, - 73u8, 234u8, 173u8, 251u8, 88u8, 226u8, 3u8, 136u8, 228u8, 136u8, + 69u8, 151u8, 198u8, 154u8, 69u8, 181u8, 41u8, 111u8, 145u8, 230u8, + 103u8, 42u8, 237u8, 91u8, 235u8, 6u8, 156u8, 65u8, 187u8, 48u8, 171u8, + 200u8, 49u8, 4u8, 9u8, 210u8, 229u8, 152u8, 187u8, 88u8, 80u8, 246u8, ], ) } @@ -37496,9 +38695,9 @@ pub mod api { location: ::std::boxed::Box::new(location), }, [ - 112u8, 254u8, 138u8, 12u8, 203u8, 176u8, 251u8, 167u8, 223u8, 0u8, - 71u8, 148u8, 19u8, 179u8, 47u8, 96u8, 188u8, 189u8, 14u8, 172u8, 1u8, - 1u8, 192u8, 107u8, 137u8, 158u8, 22u8, 9u8, 138u8, 241u8, 32u8, 47u8, + 203u8, 171u8, 70u8, 130u8, 46u8, 63u8, 76u8, 50u8, 105u8, 23u8, 249u8, + 190u8, 115u8, 74u8, 70u8, 125u8, 132u8, 112u8, 138u8, 60u8, 33u8, 35u8, + 45u8, 29u8, 95u8, 103u8, 187u8, 182u8, 188u8, 196u8, 248u8, 152u8, ], ) } @@ -37514,10 +38713,9 @@ pub mod api { location: ::std::boxed::Box::new(location), }, [ - 205u8, 143u8, 230u8, 143u8, 166u8, 184u8, 53u8, 252u8, 118u8, 184u8, - 209u8, 227u8, 225u8, 184u8, 254u8, 244u8, 101u8, 56u8, 27u8, 128u8, - 40u8, 159u8, 178u8, 62u8, 63u8, 164u8, 59u8, 236u8, 1u8, 168u8, 202u8, - 42u8, + 6u8, 113u8, 168u8, 215u8, 233u8, 202u8, 249u8, 134u8, 131u8, 8u8, + 142u8, 203u8, 142u8, 95u8, 216u8, 70u8, 38u8, 99u8, 166u8, 97u8, 218u8, + 132u8, 247u8, 14u8, 42u8, 99u8, 4u8, 115u8, 200u8, 180u8, 213u8, 50u8, ], ) } @@ -37541,10 +38739,10 @@ pub mod api { weight_limit, }, [ - 10u8, 139u8, 165u8, 239u8, 92u8, 178u8, 169u8, 62u8, 166u8, 236u8, - 50u8, 12u8, 196u8, 3u8, 233u8, 209u8, 3u8, 159u8, 184u8, 234u8, 171u8, - 46u8, 145u8, 134u8, 241u8, 155u8, 221u8, 173u8, 166u8, 94u8, 147u8, - 88u8, + 198u8, 66u8, 204u8, 162u8, 222u8, 246u8, 141u8, 165u8, 241u8, 62u8, + 43u8, 236u8, 56u8, 200u8, 54u8, 47u8, 174u8, 83u8, 167u8, 220u8, 174u8, + 111u8, 123u8, 202u8, 248u8, 232u8, 166u8, 80u8, 152u8, 223u8, 86u8, + 141u8, ], ) } @@ -37568,10 +38766,9 @@ pub mod api { weight_limit, }, [ - 156u8, 205u8, 105u8, 18u8, 120u8, 130u8, 144u8, 67u8, 152u8, 188u8, - 109u8, 121u8, 4u8, 240u8, 123u8, 112u8, 72u8, 153u8, 2u8, 111u8, 183u8, - 170u8, 199u8, 82u8, 33u8, 117u8, 43u8, 133u8, 208u8, 44u8, 118u8, - 107u8, + 70u8, 61u8, 32u8, 43u8, 101u8, 104u8, 251u8, 60u8, 212u8, 124u8, 113u8, + 243u8, 241u8, 183u8, 5u8, 231u8, 209u8, 231u8, 136u8, 3u8, 145u8, + 242u8, 179u8, 171u8, 185u8, 185u8, 7u8, 34u8, 5u8, 203u8, 21u8, 210u8, ], ) } @@ -37591,6 +38788,33 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::transfer_assets`]."] + pub fn transfer_assets( + &self, + dest: types::transfer_assets::Dest, + beneficiary: types::transfer_assets::Beneficiary, + assets: types::transfer_assets::Assets, + fee_asset_item: types::transfer_assets::FeeAssetItem, + weight_limit: types::transfer_assets::WeightLimit, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "transfer_assets", + types::TransferAssets { + dest: ::std::boxed::Box::new(dest), + beneficiary: ::std::boxed::Box::new(beneficiary), + assets: ::std::boxed::Box::new(assets), + fee_asset_item, + weight_limit, + }, + [ + 44u8, 155u8, 182u8, 37u8, 123u8, 148u8, 150u8, 191u8, 117u8, 32u8, + 16u8, 238u8, 121u8, 188u8, 217u8, 110u8, 10u8, 236u8, 174u8, 91u8, + 100u8, 201u8, 109u8, 109u8, 60u8, 177u8, 233u8, 66u8, 181u8, 191u8, + 105u8, 37u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -37613,7 +38837,7 @@ pub mod api { } pub mod attempted { use super::runtime_types; - pub type Outcome = runtime_types::xcm::v3::traits::Outcome; + pub type Outcome = runtime_types::staging_xcm::v4::traits::Outcome; } impl ::subxt::events::StaticEvent for Attempted { const PALLET: &'static str = "XcmPallet"; @@ -37638,9 +38862,9 @@ pub mod api { } pub mod sent { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Message = runtime_types::xcm::v3::Xcm; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Message = runtime_types::staging_xcm::v4::Xcm; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for Sent { @@ -37666,7 +38890,7 @@ pub mod api { } pub mod unexpected_response { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for UnexpectedResponse { @@ -37692,7 +38916,7 @@ pub mod api { pub mod response_ready { use super::runtime_types; pub type QueryId = ::core::primitive::u64; - pub type Response = runtime_types::xcm::v3::Response; + pub type Response = runtime_types::staging_xcm::v4::Response; } impl ::subxt::events::StaticEvent for ResponseReady { const PALLET: &'static str = "XcmPallet"; @@ -37832,11 +39056,10 @@ pub mod api { } pub mod invalid_responder { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; - pub type ExpectedLocation = ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >; + pub type ExpectedLocation = + ::core::option::Option; } impl ::subxt::events::StaticEvent for InvalidResponder { const PALLET: &'static str = "XcmPallet"; @@ -37865,7 +39088,7 @@ pub mod api { } pub mod invalid_responder_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for InvalidResponderVersion { @@ -37913,8 +39136,8 @@ pub mod api { pub mod assets_trapped { use super::runtime_types; pub type Hash = ::subxt::utils::H256; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Assets = runtime_types::xcm::VersionedAssets; } impl ::subxt::events::StaticEvent for AssetsTrapped { const PALLET: &'static str = "XcmPallet"; @@ -37941,9 +39164,9 @@ pub mod api { } pub mod version_change_notified { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; pub type Result = ::core::primitive::u32; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionChangeNotified { @@ -37968,7 +39191,7 @@ pub mod api { } pub mod supported_version_changed { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type Version = ::core::primitive::u32; } impl ::subxt::events::StaticEvent for SupportedVersionChanged { @@ -37994,7 +39217,7 @@ pub mod api { } pub mod notify_target_send_fail { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; pub type Error = runtime_types::xcm::v3::traits::Error; } @@ -38020,7 +39243,7 @@ pub mod api { } pub mod notify_target_migration_fail { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for NotifyTargetMigrationFail { @@ -38050,7 +39273,7 @@ pub mod api { } pub mod invalid_querier_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for InvalidQuerierVersion { @@ -38078,13 +39301,11 @@ pub mod api { } pub mod invalid_querier { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; - pub type ExpectedQuerier = - runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type MaybeActualQuerier = ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >; + pub type ExpectedQuerier = runtime_types::staging_xcm::v4::location::Location; + pub type MaybeActualQuerier = + ::core::option::Option; } impl ::subxt::events::StaticEvent for InvalidQuerier { const PALLET: &'static str = "XcmPallet"; @@ -38109,8 +39330,8 @@ pub mod api { } pub mod version_notify_started { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionNotifyStarted { @@ -38135,8 +39356,8 @@ pub mod api { } pub mod version_notify_requested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionNotifyRequested { @@ -38162,8 +39383,8 @@ pub mod api { } pub mod version_notify_unrequested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionNotifyUnrequested { @@ -38187,8 +39408,8 @@ pub mod api { } pub mod fees_paid { use super::runtime_types; - pub type Paying = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Fees = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Paying = runtime_types::staging_xcm::v4::location::Location; + pub type Fees = runtime_types::staging_xcm::v4::asset::Assets; } impl ::subxt::events::StaticEvent for FeesPaid { const PALLET: &'static str = "XcmPallet"; @@ -38213,8 +39434,8 @@ pub mod api { pub mod assets_claimed { use super::runtime_types; pub type Hash = ::subxt::utils::H256; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Assets = runtime_types::xcm::VersionedAssets; } impl ::subxt::events::StaticEvent for AssetsClaimed { const PALLET: &'static str = "XcmPallet"; @@ -38248,13 +39469,13 @@ pub mod api { use super::runtime_types; pub type SupportedVersion = ::core::primitive::u32; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_notifiers { use super::runtime_types; pub type VersionNotifiers = ::core::primitive::u64; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_notify_targets { use super::runtime_types; @@ -38264,13 +39485,13 @@ pub mod api { ::core::primitive::u32, ); pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_discovery_queue { use super::runtime_types; pub type VersionDiscoveryQueue = runtime_types::bounded_collections::bounded_vec::BoundedVec<( - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, ::core::primitive::u32, )>; } @@ -38292,7 +39513,7 @@ pub mod api { pub type LockedFungibles = runtime_types::bounded_collections::bounded_vec::BoundedVec<( ::core::primitive::u128, - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, )>; pub type Param0 = ::subxt::utils::AccountId32; } @@ -38340,9 +39561,10 @@ pub mod api { "Queries", vec![], [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } @@ -38364,15 +39586,16 @@ pub mod api { _0.borrow(), )], [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps_iter( &self, @@ -38396,7 +39619,7 @@ pub mod api { } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps( &self, @@ -38459,9 +39682,10 @@ pub mod api { "SupportedVersion", vec![], [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -38483,9 +39707,10 @@ pub mod api { _0.borrow(), )], [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -38509,9 +39734,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -38530,9 +39756,10 @@ pub mod api { "VersionNotifiers", vec![], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -38554,9 +39781,10 @@ pub mod api { _0.borrow(), )], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -38580,9 +39808,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -38602,10 +39831,9 @@ pub mod api { "VersionNotifyTargets", vec![], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -38628,10 +39856,9 @@ pub mod api { _0.borrow(), )], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -38656,10 +39883,9 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -38680,9 +39906,10 @@ pub mod api { "VersionDiscoveryQueue", vec![], [ - 110u8, 87u8, 102u8, 193u8, 125u8, 129u8, 0u8, 221u8, 218u8, 229u8, - 101u8, 94u8, 74u8, 229u8, 246u8, 180u8, 113u8, 11u8, 15u8, 159u8, 98u8, - 90u8, 30u8, 112u8, 164u8, 236u8, 151u8, 220u8, 19u8, 83u8, 67u8, 248u8, + 95u8, 74u8, 97u8, 94u8, 40u8, 140u8, 175u8, 176u8, 224u8, 222u8, 83u8, + 199u8, 170u8, 102u8, 3u8, 77u8, 127u8, 208u8, 155u8, 122u8, 176u8, + 51u8, 15u8, 253u8, 231u8, 245u8, 91u8, 192u8, 60u8, 144u8, 101u8, + 168u8, ], ) } @@ -38722,9 +39949,10 @@ pub mod api { "RemoteLockedFungibles", vec![], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38746,9 +39974,10 @@ pub mod api { _0.borrow(), )], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38772,9 +40001,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38800,9 +40030,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_2.borrow()), ], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38821,10 +40052,9 @@ pub mod api { "LockedFungibles", vec![], [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, ], ) } @@ -38846,10 +40076,9 @@ pub mod api { _0.borrow(), )], [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, ], ) } @@ -38877,6 +40106,155 @@ pub mod api { } } } + pub mod identity_migrator { + use super::root_mod; + use super::runtime_types; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::reap_identity`]."] + pub struct ReapIdentity { + pub who: reap_identity::Who, + } + pub mod reap_identity { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + } + impl ::subxt::blocks::StaticExtrinsic for ReapIdentity { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "reap_identity"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::poke_deposit`]."] + pub struct PokeDeposit { + pub who: poke_deposit::Who, + } + pub mod poke_deposit { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + } + impl ::subxt::blocks::StaticExtrinsic for PokeDeposit { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "poke_deposit"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::reap_identity`]."] + pub fn reap_identity( + &self, + who: types::reap_identity::Who, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IdentityMigrator", + "reap_identity", + types::ReapIdentity { who }, + [ + 187u8, 110u8, 202u8, 220u8, 54u8, 240u8, 242u8, 171u8, 5u8, 83u8, + 129u8, 93u8, 213u8, 208u8, 21u8, 236u8, 121u8, 128u8, 127u8, 121u8, + 153u8, 118u8, 232u8, 44u8, 20u8, 124u8, 214u8, 185u8, 249u8, 182u8, + 136u8, 96u8, + ], + ) + } + #[doc = "See [`Pallet::poke_deposit`]."] + pub fn poke_deposit( + &self, + who: types::poke_deposit::Who, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IdentityMigrator", + "poke_deposit", + types::PokeDeposit { who }, + [ + 42u8, 67u8, 168u8, 124u8, 75u8, 32u8, 143u8, 173u8, 14u8, 28u8, 76u8, + 35u8, 196u8, 255u8, 250u8, 33u8, 128u8, 159u8, 132u8, 124u8, 51u8, + 243u8, 166u8, 55u8, 208u8, 101u8, 188u8, 133u8, 36u8, 18u8, 119u8, + 146u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The identity and all sub accounts were reaped for `who`."] + pub struct IdentityReaped { + pub who: identity_reaped::Who, + } + pub mod identity_reaped { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for IdentityReaped { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "IdentityReaped"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + pub struct DepositUpdated { + pub who: deposit_updated::Who, + pub identity: deposit_updated::Identity, + pub subs: deposit_updated::Subs, + } + pub mod deposit_updated { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Identity = ::core::primitive::u128; + pub type Subs = ::core::primitive::u128; + } + impl ::subxt::events::StaticEvent for DepositUpdated { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "DepositUpdated"; + } + } + } pub mod paras_sudo_wrapper { use super::root_mod; use super::runtime_types; @@ -39118,10 +40496,9 @@ pub mod api { xcm: ::std::boxed::Box::new(xcm), }, [ - 144u8, 179u8, 113u8, 39u8, 46u8, 58u8, 218u8, 220u8, 98u8, 232u8, - 121u8, 119u8, 127u8, 99u8, 52u8, 189u8, 232u8, 28u8, 233u8, 54u8, - 122u8, 206u8, 155u8, 7u8, 88u8, 167u8, 203u8, 251u8, 96u8, 156u8, 23u8, - 54u8, + 35u8, 59u8, 126u8, 248u8, 211u8, 246u8, 239u8, 67u8, 252u8, 100u8, + 231u8, 46u8, 197u8, 83u8, 150u8, 54u8, 215u8, 188u8, 76u8, 193u8, 60u8, + 38u8, 251u8, 162u8, 19u8, 15u8, 214u8, 51u8, 24u8, 2u8, 9u8, 116u8, ], ) } @@ -40450,7 +41827,7 @@ pub mod api { #[doc = " - [`frame_support::storage::StorageDoubleMap`]: 96 byte"] #[doc = ""] #[doc = " For more info see"] - #[doc = " "] + #[doc = " "] pub fn max_key_len(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( "StateTrieMigration", @@ -40571,19 +41948,11 @@ pub mod api { const EVENT: &'static str = "DefensiveTestCall"; } } - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - } - pub struct StorageApi; - impl StorageApi {} - } } pub mod sudo { use super::root_mod; use super::runtime_types; - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub type Error = runtime_types::pallet_sudo::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_sudo::pallet::Call; @@ -40685,6 +42054,22 @@ pub mod api { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "sudo_as"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_key`]."] + pub struct RemoveKey; + impl ::subxt::blocks::StaticExtrinsic for RemoveKey { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "remove_key"; + } } pub struct TransactionApi; impl TransactionApi { @@ -40697,10 +42082,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 230u8, 66u8, 61u8, 240u8, 132u8, 75u8, 17u8, 14u8, 12u8, 233u8, 24u8, - 192u8, 91u8, 200u8, 209u8, 133u8, 251u8, 154u8, 221u8, 95u8, 165u8, - 112u8, 49u8, 192u8, 126u8, 134u8, 46u8, 221u8, 150u8, 120u8, 178u8, - 103u8, + 126u8, 191u8, 96u8, 252u8, 103u8, 117u8, 232u8, 59u8, 13u8, 216u8, + 200u8, 186u8, 103u8, 56u8, 211u8, 188u8, 66u8, 63u8, 12u8, 200u8, + 114u8, 107u8, 46u8, 113u8, 249u8, 239u8, 130u8, 235u8, 107u8, 167u8, + 28u8, 234u8, ], ) } @@ -40718,10 +42103,9 @@ pub mod api { weight, }, [ - 39u8, 207u8, 214u8, 172u8, 135u8, 112u8, 167u8, 27u8, 210u8, 182u8, - 160u8, 163u8, 128u8, 207u8, 98u8, 136u8, 35u8, 14u8, 163u8, 243u8, - 224u8, 232u8, 254u8, 35u8, 244u8, 13u8, 212u8, 137u8, 99u8, 158u8, - 249u8, 164u8, + 115u8, 252u8, 134u8, 42u8, 167u8, 146u8, 239u8, 12u8, 141u8, 126u8, + 53u8, 7u8, 6u8, 51u8, 253u8, 87u8, 111u8, 24u8, 23u8, 167u8, 28u8, + 210u8, 65u8, 219u8, 65u8, 167u8, 41u8, 51u8, 139u8, 44u8, 132u8, 82u8, ], ) } @@ -40755,9 +42139,23 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 97u8, 37u8, 226u8, 52u8, 181u8, 51u8, 13u8, 232u8, 250u8, 246u8, 195u8, - 219u8, 186u8, 236u8, 187u8, 3u8, 246u8, 172u8, 203u8, 35u8, 30u8, - 227u8, 242u8, 134u8, 51u8, 90u8, 105u8, 119u8, 1u8, 65u8, 79u8, 36u8, + 51u8, 226u8, 36u8, 234u8, 26u8, 132u8, 248u8, 140u8, 45u8, 72u8, 176u8, + 70u8, 127u8, 173u8, 147u8, 25u8, 21u8, 188u8, 41u8, 93u8, 2u8, 214u8, + 39u8, 150u8, 155u8, 68u8, 91u8, 193u8, 73u8, 101u8, 118u8, 119u8, + ], + ) + } + #[doc = "See [`Pallet::remove_key`]."] + pub fn remove_key(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Sudo", + "remove_key", + types::RemoveKey {}, + [ + 133u8, 253u8, 54u8, 175u8, 202u8, 239u8, 5u8, 198u8, 180u8, 138u8, + 25u8, 28u8, 109u8, 40u8, 30u8, 56u8, 126u8, 100u8, 52u8, 205u8, 250u8, + 191u8, 61u8, 195u8, 172u8, 142u8, 184u8, 239u8, 247u8, 10u8, 211u8, + 79u8, ], ) } @@ -40802,11 +42200,13 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The sudo key has been updated."] pub struct KeyChanged { - pub old_sudoer: key_changed::OldSudoer, + pub old: key_changed::Old, + pub new: key_changed::New, } pub mod key_changed { use super::runtime_types; - pub type OldSudoer = ::core::option::Option<::subxt::utils::AccountId32>; + pub type Old = ::core::option::Option<::subxt::utils::AccountId32>; + pub type New = ::subxt::utils::AccountId32; } impl ::subxt::events::StaticEvent for KeyChanged { const PALLET: &'static str = "Sudo"; @@ -40822,6 +42222,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The key was permanently removed."] + pub struct KeyRemoved; + impl ::subxt::events::StaticEvent for KeyRemoved { + const PALLET: &'static str = "Sudo"; + const EVENT: &'static str = "KeyRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] pub struct SudoAsDone { pub sudo_result: sudo_as_done::SudoResult, @@ -41393,6 +42809,17 @@ pub mod api { remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8>, }, + #[codec(index = 9)] + #[doc = "See [`Pallet::authorize_upgrade`]."] + authorize_upgrade { code_hash: ::subxt::utils::H256 }, + #[codec(index = 10)] + #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + authorize_upgrade_without_checks { code_hash: ::subxt::utils::H256 }, + #[codec(index = 11)] + #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + apply_authorized_upgrade { + code: ::std::vec::Vec<::core::primitive::u8>, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41428,6 +42855,12 @@ pub mod api { #[codec(index = 5)] #[doc = "The origin filter prevent the call to be dispatched."] CallFiltered, + #[codec(index = 6)] + #[doc = "No upgrade authorized."] + NothingAuthorized, + #[codec(index = 7)] + #[doc = "The submitted code is not authorized."] + Unauthorized, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41471,6 +42904,12 @@ pub mod api { sender: ::subxt::utils::AccountId32, hash: ::subxt::utils::H256, }, + #[codec(index = 6)] + #[doc = "An upgrade was authorized."] + UpgradeAuthorized { + code_hash: ::subxt::utils::H256, + check_version: ::core::primitive::bool, + }, } } #[derive( @@ -41500,6 +42939,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CodeUpgradeAuthorization { + pub code_hash: ::subxt::utils::H256, + pub check_version: ::core::primitive::bool, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct EventRecord<_0, _1> { pub phase: runtime_types::frame_system::Phase, pub event: _0, @@ -42587,6 +44040,30 @@ pub mod api { }, } } + pub mod pallet_broker { + use super::runtime_types; + pub mod coretime_interface { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum CoreAssignment { + #[codec(index = 0)] + Idle, + #[codec(index = 1)] + Pool, + #[codec(index = 2)] + Task(::core::primitive::u32), + } + } + } pub mod pallet_child_bounties { use super::runtime_types; pub mod pallet { @@ -43347,6 +44824,54 @@ pub mod api { #[codec(index = 14)] #[doc = "See [`Pallet::quit_sub`]."] quit_sub, + #[codec(index = 15)] + #[doc = "See [`Pallet::add_username_authority`]."] + add_username_authority { + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + suffix: ::std::vec::Vec<::core::primitive::u8>, + allocation: ::core::primitive::u32, + }, + #[codec(index = 16)] + #[doc = "See [`Pallet::remove_username_authority`]."] + remove_username_authority { + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 17)] + #[doc = "See [`Pallet::set_username_for`]."] + set_username_for { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + username: ::std::vec::Vec<::core::primitive::u8>, + signature: + ::core::option::Option, + }, + #[codec(index = 18)] + #[doc = "See [`Pallet::accept_username`]."] + accept_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 19)] + #[doc = "See [`Pallet::remove_expired_approval`]."] + remove_expired_approval { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 20)] + #[doc = "See [`Pallet::set_primary_username`]."] + set_primary_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 21)] + #[doc = "See [`Pallet::remove_dangling_username`]."] + remove_dangling_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43411,6 +44936,33 @@ pub mod api { #[codec(index = 16)] #[doc = "Error that occurs when there is an issue paying for judgement."] JudgementPaymentFailed, + #[codec(index = 17)] + #[doc = "The provided suffix is too long."] + InvalidSuffix, + #[codec(index = 18)] + #[doc = "The sender does not have permission to issue a username."] + NotUsernameAuthority, + #[codec(index = 19)] + #[doc = "The authority cannot allocate any more usernames."] + NoAllocation, + #[codec(index = 20)] + #[doc = "The signature on a username was not valid."] + InvalidSignature, + #[codec(index = 21)] + #[doc = "Setting this username requires a signature, but none was provided."] + RequiresSignature, + #[codec(index = 22)] + #[doc = "The username does not meet the requirements."] + InvalidUsername, + #[codec(index = 23)] + #[doc = "The username is already taken."] + UsernameTaken, + #[codec(index = 24)] + #[doc = "The requested username does not exist."] + NoUsername, + #[codec(index = 25)] + #[doc = "The username cannot be forcefully removed because it can still be accepted."] + NotExpired, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43484,6 +45036,53 @@ pub mod api { main: ::subxt::utils::AccountId32, deposit: ::core::primitive::u128, }, + #[codec(index = 10)] + #[doc = "A username authority was added."] + AuthorityAdded { + authority: ::subxt::utils::AccountId32, + }, + #[codec(index = 11)] + #[doc = "A username authority was removed."] + AuthorityRemoved { + authority: ::subxt::utils::AccountId32, + }, + #[codec(index = 12)] + #[doc = "A username was set for `who`."] + UsernameSet { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 13)] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + UsernameQueued { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + expiration: ::core::primitive::u32, + }, + #[codec(index = 14)] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + PreapprovalExpired { whose: ::subxt::utils::AccountId32 }, + #[codec(index = 15)] + #[doc = "A username was set as a primary and can be looked up from `who`."] + PrimaryUsernameSet { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 16)] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + DanglingUsernameRemoved { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, } } pub mod types { @@ -43498,6 +45097,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AuthorityProperties<_0> { + pub suffix: _0, + pub allocation: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Data { #[codec(index = 0)] None, @@ -43637,121 +45250,6 @@ pub mod api { } } } - pub mod pallet_im_online { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::heartbeat`]."] - heartbeat { - heartbeat: - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, - signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "Non existent public key."] - InvalidKey, - #[codec(index = 1)] - #[doc = "Duplicated heartbeat."] - DuplicatedHeartbeat, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "A new heartbeat was received from `AuthorityId`."] - HeartbeatReceived { - authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - }, - #[codec(index = 1)] - #[doc = "At the end of the session, no offence was committed."] - AllGood, - #[codec(index = 2)] - #[doc = "At the end of the session, at least one validator was found to be offline."] - SomeOffline { - offline: ::std::vec::Vec<(::subxt::utils::AccountId32, ())>, - }, - } - } - pub mod sr25519 { - use super::runtime_types; - pub mod app_sr25519 { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Heartbeat<_0> { - pub block_number: _0, - pub session_index: ::core::primitive::u32, - pub authority_index: ::core::primitive::u32, - pub validators_len: ::core::primitive::u32, - } - } pub mod pallet_indices { use super::runtime_types; pub mod pallet { @@ -43908,6 +45406,9 @@ pub mod api { #[doc = ""] #[doc = "This can change at any time and may resolve in the future by re-trying."] QueuePaused, + #[codec(index = 8)] + #[doc = "Another call is in progress and needs to finish before this call can happen."] + RecursiveDisallowed, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43921,7 +45422,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Event` enum of this pallet"] pub enum Event { - # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -46721,6 +48222,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum HoldReason { + #[codec(index = 0)] + SlashForMigrate, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum MigrationCompute { #[codec(index = 0)] Signed, @@ -46821,6 +48336,9 @@ pub mod api { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call: ::std::boxed::Box, }, + #[codec(index = 4)] + #[doc = "See [`Pallet::remove_key`]."] + remove_key, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -46832,10 +48350,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Sender must be the Sudo account"] + #[doc = "Sender must be the Sudo account."] RequireSudo, } #[derive( @@ -46859,9 +48377,13 @@ pub mod api { #[codec(index = 1)] #[doc = "The sudo key has been updated."] KeyChanged { - old_sudoer: ::core::option::Option<::subxt::utils::AccountId32>, + old: ::core::option::Option<::subxt::utils::AccountId32>, + new: ::subxt::utils::AccountId32, }, #[codec(index = 2)] + #[doc = "The key was permanently removed."] + KeyRemoved, + #[codec(index = 3)] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] SudoAsDone { sudo_result: @@ -47054,7 +48576,7 @@ pub mod api { >, #[codec(compact)] amount: ::core::primitive::u128, - beneficiary: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, valid_from: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] @@ -47185,7 +48707,7 @@ pub mod api { asset_kind: runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, amount: ::core::primitive::u128, - beneficiary: runtime_types::xcm::VersionedMultiLocation, + beneficiary: runtime_types::xcm::VersionedLocation, valid_from: ::core::primitive::u32, expire_at: ::core::primitive::u32, }, @@ -47628,23 +49150,23 @@ pub mod api { #[codec(index = 0)] #[doc = "See [`Pallet::send`]."] send { - dest: ::std::boxed::Box, + dest: ::std::boxed::Box, message: ::std::boxed::Box, }, #[codec(index = 1)] #[doc = "See [`Pallet::teleport_assets`]."] teleport_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 2)] #[doc = "See [`Pallet::reserve_transfer_assets`]."] reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 3)] @@ -47656,9 +49178,8 @@ pub mod api { #[codec(index = 4)] #[doc = "See [`Pallet::force_xcm_version`]."] force_xcm_version { - location: ::std::boxed::Box< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >, + location: + ::std::boxed::Box, version: ::core::primitive::u32, }, #[codec(index = 5)] @@ -47669,34 +49190,43 @@ pub mod api { #[codec(index = 6)] #[doc = "See [`Pallet::force_subscribe_version_notify`]."] force_subscribe_version_notify { - location: ::std::boxed::Box, + location: ::std::boxed::Box, }, #[codec(index = 7)] #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] force_unsubscribe_version_notify { - location: ::std::boxed::Box, + location: ::std::boxed::Box, }, #[codec(index = 8)] #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] limited_reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 9)] #[doc = "See [`Pallet::limited_teleport_assets`]."] limited_teleport_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 10)] #[doc = "See [`Pallet::force_suspension`]."] force_suspension { suspended: ::core::primitive::bool }, + #[codec(index = 11)] + #[doc = "See [`Pallet::transfer_assets`]."] + transfer_assets { + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47725,7 +49255,7 @@ pub mod api { #[doc = "The message's weight could not be determined."] UnweighableMessage, #[codec(index = 4)] - #[doc = "The destination `MultiLocation` provided cannot be inverted."] + #[doc = "The destination `Location` provided cannot be inverted."] DestinationNotInvertible, #[codec(index = 5)] #[doc = "The assets to be sent are empty."] @@ -47753,8 +49283,8 @@ pub mod api { #[doc = "The location is invalid since it already has a subscription from us."] AlreadySubscribed, #[codec(index = 13)] - #[doc = "Invalid asset for the operation."] - InvalidAsset, + #[doc = "Could not check-out the assets for teleportation to the destination chain."] + CannotCheckOutTeleport, #[codec(index = 14)] #[doc = "The owner does not own (all) of the asset that they wish to do the operation on."] LowBalance, @@ -47773,6 +49303,21 @@ pub mod api { #[codec(index = 19)] #[doc = "The unlock operation cannot succeed because there are still consumers of the lock."] InUse, + #[codec(index = 20)] + #[doc = "Invalid non-concrete asset."] + InvalidAssetNotConcrete, + #[codec(index = 21)] + #[doc = "Invalid asset, reserve chain could not be determined for it."] + InvalidAssetUnknownReserve, + #[codec(index = 22)] + #[doc = "Invalid asset, do not support remote asset reserves with different fees reserves."] + InvalidAssetUnsupportedReserve, + #[codec(index = 23)] + #[doc = "Too many assets with different reserve locations have been attempted for transfer."] + TooManyReserves, + #[codec(index = 24)] + #[doc = "Local XCM execution incomplete."] + LocalExecutionIncomplete, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47789,14 +49334,14 @@ pub mod api { #[codec(index = 0)] #[doc = "Execution of an XCM message was attempted."] Attempted { - outcome: runtime_types::xcm::v3::traits::Outcome, + outcome: runtime_types::staging_xcm::v4::traits::Outcome, }, #[codec(index = 1)] #[doc = "A XCM message was sent."] Sent { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - message: runtime_types::xcm::v3::Xcm, + origin: runtime_types::staging_xcm::v4::location::Location, + destination: runtime_types::staging_xcm::v4::location::Location, + message: runtime_types::staging_xcm::v4::Xcm, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] @@ -47804,7 +49349,7 @@ pub mod api { #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] UnexpectedResponse { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 3)] @@ -47812,7 +49357,7 @@ pub mod api { #[doc = "no registered notification call."] ResponseReady { query_id: ::core::primitive::u64, - response: runtime_types::xcm::v3::Response, + response: runtime_types::staging_xcm::v4::Response, }, #[codec(index = 4)] #[doc = "Query response has been received and query is removed. The registered notification has"] @@ -47855,10 +49400,10 @@ pub mod api { #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidResponder { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, expected_location: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 9)] @@ -47870,7 +49415,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidResponderVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 10)] @@ -47880,31 +49425,31 @@ pub mod api { #[doc = "Some assets have been placed in an asset trap."] AssetsTrapped { hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, #[codec(index = 12)] #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] VersionChangeNotified { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + destination: runtime_types::staging_xcm::v4::location::Location, result: ::core::primitive::u32, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 13)] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] SupportedVersionChanged { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, version: ::core::primitive::u32, }, #[codec(index = 14)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] NotifyTargetSendFail { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, error: runtime_types::xcm::v3::traits::Error, }, @@ -47912,7 +49457,7 @@ pub mod api { #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] NotifyTargetMigrationFail { - location: runtime_types::xcm::VersionedMultiLocation, + location: runtime_types::xcm::VersionedLocation, query_id: ::core::primitive::u64, }, #[codec(index = 16)] @@ -47924,7 +49469,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidQuerierVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 17)] @@ -47932,49 +49477,48 @@ pub mod api { #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidQuerier { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, - expected_querier: - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + expected_querier: runtime_types::staging_xcm::v4::location::Location, maybe_actual_querier: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 18)] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] VersionNotifyStarted { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 19)] #[doc = "We have requested that a remote chain send us XCM version change notifications."] VersionNotifyRequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 20)] #[doc = "We have requested that a remote chain stops sending us XCM version change"] #[doc = "notifications."] VersionNotifyUnrequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 21)] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] FeesPaid { - paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - fees: runtime_types::xcm::v3::multiasset::MultiAssets, + paying: runtime_types::staging_xcm::v4::location::Location, + fees: runtime_types::staging_xcm::v4::asset::Assets, }, #[codec(index = 22)] #[doc = "Some assets have been claimed from an asset trap"] AssetsClaimed { hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, } #[derive( @@ -47989,9 +49533,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Origin { #[codec(index = 0)] - Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Xcm(runtime_types::staging_xcm::v4::location::Location), #[codec(index = 1)] - Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Response(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -48006,16 +49550,16 @@ pub mod api { pub enum QueryStatus<_0> { #[codec(index = 0)] Pending { - responder: runtime_types::xcm::VersionedMultiLocation, + responder: runtime_types::xcm::VersionedLocation, maybe_match_querier: - ::core::option::Option, + ::core::option::Option, maybe_notify: ::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>, timeout: _0, }, #[codec(index = 1)] VersionNotifier { - origin: runtime_types::xcm::VersionedMultiLocation, + origin: runtime_types::xcm::VersionedLocation, is_active: ::core::primitive::bool, }, #[codec(index = 2)] @@ -48036,8 +49580,8 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct RemoteLockedFungibleRecord<_0> { pub amount: ::core::primitive::u128, - pub owner: runtime_types::xcm::VersionedMultiLocation, - pub locker: runtime_types::xcm::VersionedMultiLocation, + pub owner: runtime_types::xcm::VersionedLocation, + pub locker: runtime_types::xcm::VersionedLocation, pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<( _0, ::core::primitive::u128, @@ -48339,12 +49883,12 @@ pub mod api { PrecheckingMaxMemory(::core::primitive::u64), #[codec(index = 5)] PvfPrepTimeout( - runtime_types::polkadot_primitives::v6::PvfPrepTimeoutKind, + runtime_types::polkadot_primitives::v6::PvfPrepKind, ::core::primitive::u64, ), #[codec(index = 6)] PvfExecTimeout( - runtime_types::polkadot_primitives::v6::PvfExecTimeoutKind, + runtime_types::polkadot_primitives::v6::PvfExecKind, ::core::primitive::u64, ), #[codec(index = 7)] @@ -48885,7 +50429,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfExecTimeoutKind { + pub enum PvfExecKind { #[codec(index = 0)] Backing, #[codec(index = 1)] @@ -48901,11 +50445,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfPrepTimeoutKind { + pub enum PvfPrepKind { #[codec(index = 0)] Precheck, #[codec(index = 1)] - Lenient, + Prepare, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49030,6 +50574,10 @@ pub mod api { BackingValid(::subxt::utils::H256), #[codec(index = 3)] ApprovalChecking, + #[codec(index = 4)] + ApprovalCheckingMultipleCandidates( + ::std::vec::Vec, + ), } #[derive( :: subxt :: ext :: codec :: CompactAs, @@ -49060,6 +50608,23 @@ pub mod api { Explicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), } } + pub mod vstaging { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApprovalVotingParams { + pub max_approval_coalesce_count: ::core::primitive::u32, + } + } } pub mod polkadot_runtime_common { use super::runtime_types; @@ -49776,6 +51341,55 @@ pub mod api { Ending(_0), } } + pub mod identity_migrator { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::reap_identity`]."] + reap_identity { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "See [`Pallet::poke_deposit`]."] + poke_deposit { who: ::subxt::utils::AccountId32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The identity and all sub accounts were reaped for `who`."] + IdentityReaped { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + DepositUpdated { + who: ::subxt::utils::AccountId32, + identity: ::core::primitive::u128, + subs: ::core::primitive::u128, + }, + } + } + } pub mod impls { use super::runtime_types; #[derive( @@ -49794,6 +51408,11 @@ pub mod api { location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, asset_id: runtime_types::xcm::v3::multiasset::AssetId, }, + #[codec(index = 4)] + V4 { + location: runtime_types::staging_xcm::v4::location::Location, + asset_id: runtime_types::staging_xcm::v4::asset::AssetId, + }, } } pub mod paras_registrar { @@ -50009,6 +51628,9 @@ pub mod api { #[codec(index = 7)] #[doc = "Cannot downgrade lease holding parachain to on-demand."] CannotDowngrade, + #[codec(index = 8)] + #[doc = "There are more cores than supported by the runtime."] + TooManyCores, } } } @@ -50102,6 +51724,125 @@ pub mod api { } pub mod polkadot_runtime_parachains { use super::runtime_types; + pub mod assigner_coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + AssignmentsEmpty, + #[codec(index = 1)] + #[doc = "Assignments together exceeded 57600."] + OverScheduled, + #[codec(index = 2)] + #[doc = "Assignments together less than 57600"] + UnderScheduled, + #[codec(index = 3)] + #[doc = "assign_core is only allowed to append new assignments at the end of already existing"] + #[doc = "ones."] + DisallowedInsert, + #[codec(index = 4)] + #[doc = "Tried to insert a schedule for the same core and block number as an existing schedule"] + DuplicateInsert, + #[codec(index = 5)] + #[doc = "Tried to add an unsorted set of assignments"] + AssignmentsNotSorted, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssignmentState { + pub ratio: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + pub remaining: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CoreDescriptor < _0 > { pub queue : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: QueueDescriptor < _0 > > , pub current_work : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: WorkState < _0 > > , } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PartsOf57600(pub ::core::primitive::u16); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueueDescriptor<_0> { + pub first: _0, + pub last: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Schedule<_0> { + pub assignments: ::std::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>, + pub end_hint: ::core::option::Option<_0>, + pub next_schedule: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WorkState < _0 > { pub assignments : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: AssignmentState ,) > , pub end_hint : :: core :: option :: Option < _0 > , pub pos : :: core :: primitive :: u16 , pub step : runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 , } + } pub mod assigner_on_demand { use super::runtime_types; pub mod pallet { @@ -50154,10 +51895,6 @@ pub mod api { #[doc = "The current spot price is higher than the max amount specified in the `place_order`"] #[doc = "call, making it invalid."] SpotPriceHigherThanMaxAmount, - #[codec(index = 3)] - #[doc = "There are no on demand cores available. `place_order` will not add anything to the"] - #[doc = "queue."] - NoOnDemandCores, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -50198,6 +51935,19 @@ pub mod api { pub core_idx: runtime_types::polkadot_primitives::v6::CoreIndex, pub count: ::core::primitive::u32, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EnqueuedOrder { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } } pub mod configuration { use super::runtime_types; @@ -50215,7 +51965,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_on_demand_cores`]."] set_on_demand_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_coretime_cores`]."] set_coretime_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , # [codec (index = 53)] # [doc = "See [`Pallet::set_node_feature`]."] set_node_feature { index : :: core :: primitive :: u8 , value : :: core :: primitive :: bool , } , # [codec (index = 54)] # [doc = "See [`Pallet::set_approval_voting_params`]."] set_approval_voting_params { new : runtime_types :: polkadot_primitives :: vstaging :: ApprovalVotingParams , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -50267,7 +52017,7 @@ pub mod api { pub executor_params: runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, pub code_retention_period: _0, - pub on_demand_cores: ::core::primitive::u32, + pub coretime_cores: ::core::primitive::u32, pub on_demand_retries: ::core::primitive::u32, pub on_demand_queue_max_size: ::core::primitive::u32, pub on_demand_target_queue_utilization: @@ -50291,6 +52041,68 @@ pub mod api { pub pvf_voting_ttl: ::core::primitive::u32, pub minimum_validation_upgrade_delay: _0, pub minimum_backing_votes: ::core::primitive::u32, + pub node_features: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub approval_voting_params: + runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams, + } + } + pub mod coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 1)] # [doc = "See [`Pallet::request_core_count`]."] request_core_count { count : :: core :: primitive :: u16 , } , # [codec (index = 4)] # [doc = "See [`Pallet::assign_core`]."] assign_core { core : :: core :: primitive :: u16 , begin : :: core :: primitive :: u32 , assignment : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 ,) > , end_hint : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The paraid making the call is not the coretime brokerage system parachain."] + NotBroker, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The broker chain has asked for revenue information for a specific block."] + RevenueInfoRequested { when: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "A core has received a new assignment from the broker chain."] + CoreAssigned { + core: runtime_types::polkadot_primitives::v6::CoreIndex, + }, + } } } pub mod disputes { @@ -51193,6 +53005,9 @@ pub mod api { #[codec(index = 5)] #[doc = "A dispute statement was invalid."] DisputeInvalid, + #[codec(index = 6)] + #[doc = "A candidate was backed by a disabled validator"] + BackedByDisabled, } } } @@ -51210,8 +53025,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Assignment { - pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub enum Assignment { + #[codec(index = 0)] + Pool { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + core_index: runtime_types::polkadot_primitives::v6::CoreIndex, + }, + #[codec(index = 1)] + Bulk(runtime_types::polkadot_parachain_primitives::primitives::Id), } } pub mod pallet { @@ -51477,8 +53298,6 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Call), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Call), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Call), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Call), #[codec(index = 20)] @@ -51559,8 +53378,14 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Call), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Call), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Call), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Call), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call, + ), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Call, @@ -51601,8 +53426,6 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Error), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Error), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Error), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Error), #[codec(index = 20)] @@ -51671,6 +53494,10 @@ pub mod api { OnDemandAssignmentProvider( runtime_types::polkadot_runtime_parachains::assigner_on_demand::pallet::Error, ), + #[codec(index = 68)] + CoretimeAssignmentProvider( + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error, + ), #[codec(index = 70)] Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error), #[codec(index = 71)] @@ -51679,6 +53506,8 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Error), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Error), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Error), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Error), #[codec(index = 250)] @@ -51719,8 +53548,6 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Event), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Event), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Event), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Event), #[codec(index = 20)] @@ -51785,8 +53612,14 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Event), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Event), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Event), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Event), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event, + ), #[codec(index = 251)] AssignedSlots( runtime_types::polkadot_runtime_common::assigned_slots::pallet::Event, @@ -51815,6 +53648,8 @@ pub mod api { Preimage(runtime_types::pallet_preimage::pallet::HoldReason), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::HoldReason), + #[codec(index = 254)] + StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::HoldReason), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51829,7 +53664,6 @@ pub mod api { pub struct SessionKeys { pub grandpa: runtime_types::sp_consensus_grandpa::app::Public, pub babe: runtime_types::sp_consensus_babe::app::Public, - pub im_online: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, pub para_validator: runtime_types::polkadot_primitives::v6::validator_app::Public, pub para_assignment: runtime_types::polkadot_primitives::v6::assignment_app::Public, pub authority_discovery: runtime_types::sp_authority_discovery::app::Public, @@ -52455,7 +54289,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct VrfSignature { - pub output: [::core::primitive::u8; 32usize], + pub pre_output: [::core::primitive::u8; 32usize], pub proof: [::core::primitive::u8; 64usize], } } @@ -53611,6 +55445,858 @@ pub mod api { } } } + pub mod v4 { + use super::runtime_types; + pub mod asset { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Asset { + pub id: runtime_types::staging_xcm::v4::asset::AssetId, + pub fun: runtime_types::staging_xcm::v4::asset::Fungibility, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetFilter { + #[codec(index = 0)] + Definite(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + Wild(runtime_types::staging_xcm::v4::asset::WildAsset), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetId(pub runtime_types::staging_xcm::v4::location::Location); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetInstance { + #[codec(index = 0)] + Undefined, + #[codec(index = 1)] + Index(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 2)] + Array4([::core::primitive::u8; 4usize]), + #[codec(index = 3)] + Array8([::core::primitive::u8; 8usize]), + #[codec(index = 4)] + Array16([::core::primitive::u8; 16usize]), + #[codec(index = 5)] + Array32([::core::primitive::u8; 32usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Assets( + pub ::std::vec::Vec, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Fungibility { + #[codec(index = 0)] + Fungible(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 1)] + NonFungible(runtime_types::staging_xcm::v4::asset::AssetInstance), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildAsset { + #[codec(index = 0)] + All, + #[codec(index = 1)] + AllOf { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + }, + #[codec(index = 2)] + AllCounted(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 3)] + AllOfCounted { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + #[codec(compact)] + count: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildFungibility { + #[codec(index = 0)] + Fungible, + #[codec(index = 1)] + NonFungible, + } + } + pub mod junction { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junction { + #[codec(index = 0)] + Parachain(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 1)] + AccountId32 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + AccountIndex64 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + #[codec(compact)] + index: ::core::primitive::u64, + }, + #[codec(index = 3)] + AccountKey20 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + key: [::core::primitive::u8; 20usize], + }, + #[codec(index = 4)] + PalletInstance(::core::primitive::u8), + #[codec(index = 5)] + GeneralIndex(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 6)] + GeneralKey { + length: ::core::primitive::u8, + data: [::core::primitive::u8; 32usize], + }, + #[codec(index = 7)] + OnlyChild, + #[codec(index = 8)] + Plurality { + id: runtime_types::xcm::v3::junction::BodyId, + part: runtime_types::xcm::v3::junction::BodyPart, + }, + #[codec(index = 9)] + GlobalConsensus(runtime_types::staging_xcm::v4::junction::NetworkId), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum NetworkId { + #[codec(index = 0)] + ByGenesis([::core::primitive::u8; 32usize]), + #[codec(index = 1)] + ByFork { + block_number: ::core::primitive::u64, + block_hash: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + Polkadot, + #[codec(index = 3)] + Kusama, + #[codec(index = 4)] + Westend, + #[codec(index = 5)] + Rococo, + #[codec(index = 6)] + Wococo, + #[codec(index = 7)] + Ethereum { + #[codec(compact)] + chain_id: ::core::primitive::u64, + }, + #[codec(index = 8)] + BitcoinCore, + #[codec(index = 9)] + BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, + } + } + pub mod junctions { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junctions { + #[codec(index = 0)] + Here, + #[codec(index = 1)] + X1([runtime_types::staging_xcm::v4::junction::Junction; 1usize]), + #[codec(index = 2)] + X2([runtime_types::staging_xcm::v4::junction::Junction; 2usize]), + #[codec(index = 3)] + X3([runtime_types::staging_xcm::v4::junction::Junction; 3usize]), + #[codec(index = 4)] + X4([runtime_types::staging_xcm::v4::junction::Junction; 4usize]), + #[codec(index = 5)] + X5([runtime_types::staging_xcm::v4::junction::Junction; 5usize]), + #[codec(index = 6)] + X6([runtime_types::staging_xcm::v4::junction::Junction; 6usize]), + #[codec(index = 7)] + X7([runtime_types::staging_xcm::v4::junction::Junction; 7usize]), + #[codec(index = 8)] + X8([runtime_types::staging_xcm::v4::junction::Junction; 8usize]), + } + } + pub mod location { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Location { + pub parents: ::core::primitive::u8, + pub interior: runtime_types::staging_xcm::v4::junctions::Junctions, + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Outcome { + #[codec(index = 0)] + Complete { + used: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 1)] + Incomplete { + used: runtime_types::sp_weights::weight_v2::Weight, + error: runtime_types::xcm::v3::traits::Error, + }, + #[codec(index = 2)] + Error { + error: runtime_types::xcm::v3::traits::Error, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction { + #[codec(index = 0)] + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { + jit_withdraw: ::core::primitive::bool, + }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction2 { + #[codec(index = 0)] + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded2, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { + jit_withdraw: ::core::primitive::bool, + }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PalletInfo { + #[codec(compact)] + pub index: ::core::primitive::u32, + pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + #[codec(compact)] + pub major: ::core::primitive::u32, + #[codec(compact)] + pub minor: ::core::primitive::u32, + #[codec(compact)] + pub patch: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryResponseInfo { + pub destination: runtime_types::staging_xcm::v4::location::Location, + #[codec(compact)] + pub query_id: ::core::primitive::u64, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Response { + #[codec(index = 0)] + Null, + #[codec(index = 1)] + Assets(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ExecutionResult( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 3)] + Version(::core::primitive::u32), + #[codec(index = 4)] + PalletsInfo( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::staging_xcm::v4::PalletInfo, + >, + ), + #[codec(index = 5)] + DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm(pub ::std::vec::Vec); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm2(pub ::std::vec::Vec); + } } pub mod xcm { use super::runtime_types; @@ -54636,6 +57322,8 @@ pub mod api { BitcoinCore, #[codec(index = 9)] BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, } } pub mod junctions { @@ -54953,27 +57641,6 @@ pub mod api { #[codec(index = 39)] ExceedsStackLimit, } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Outcome { - #[codec(index = 0)] - Complete(runtime_types::sp_weights::weight_v2::Weight), - #[codec(index = 1)] - Incomplete( - runtime_types::sp_weights::weight_v2::Weight, - runtime_types::xcm::v3::traits::Error, - ), - #[codec(index = 2)] - Error(runtime_types::xcm::v3::traits::Error), - } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55568,6 +58235,8 @@ pub mod api { pub enum VersionedAssetId { #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::AssetId), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::AssetId), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55579,11 +58248,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedMultiAssets { + pub enum VersionedAssets { #[codec(index = 1)] V2(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::Assets), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55595,11 +58266,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedMultiLocation { + pub enum VersionedLocation { #[codec(index = 1)] V2(runtime_types::xcm::v2::multilocation::MultiLocation), #[codec(index = 3)] V3(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55616,6 +58289,8 @@ pub mod api { V2(runtime_types::xcm::v2::Response), #[codec(index = 3)] V3(runtime_types::xcm::v3::Response), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Response), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55632,6 +58307,8 @@ pub mod api { V2(runtime_types::xcm::v2::Xcm), #[codec(index = 3)] V3(runtime_types::xcm::v3::Xcm), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55648,6 +58325,8 @@ pub mod api { V2(runtime_types::xcm::v2::Xcm2), #[codec(index = 3)] V3(runtime_types::xcm::v3::Xcm2), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm2), } } } diff --git a/testing/substrate-runner/src/lib.rs b/testing/substrate-runner/src/lib.rs index 2b0434872a..15d390b793 100644 --- a/testing/substrate-runner/src/lib.rs +++ b/testing/substrate-runner/src/lib.rs @@ -21,7 +21,7 @@ pub struct SubstrateNodeBuilder { impl Default for SubstrateNodeBuilder { fn default() -> Self { - Self::new() + SubstrateNodeBuilder::new() } } @@ -29,11 +29,23 @@ impl SubstrateNodeBuilder { /// Configure a new Substrate node. pub fn new() -> Self { SubstrateNodeBuilder { - binary_paths: vec!["substrate-node".into(), "substrate".into()], + binary_paths: vec![], custom_flags: Default::default(), } } + /// Provide "substrate-node" and "substrate" as binary paths + pub fn substrate(&mut self) -> &mut Self { + self.binary_paths = vec!["substrate-node".into(), "substrate".into()]; + self + } + + /// Provide "polkadot" as binary path. + pub fn polkadot(&mut self) -> &mut Self { + self.binary_paths = vec!["polkadot".into()]; + self + } + /// Set the path to the `substrate` binary; defaults to "substrate-node" /// or "substrate". pub fn binary_paths(&mut self, paths: Paths) -> &mut Self